我正在使用 IntelliJ 13 并设置了一个 Java 项目,其模块基于 Maven 项目。
有一个我必须重命名的 Maven 项目,因此我将不得不更改它在 pom 文件中的 artifactId 属性值。
如果我手动执行此操作,则我将不得不找到它的所有出现并手动修改它们(例如:它作为模块包含的位置以及它作为依赖项使用的位置)。
由于 IntelliJ 提供了许多重构技术,我认为应该支持 pom artifactId 属性上的重构->重命名,但它似乎不支持。
我可以尝试执行查找/替换 .. 但这仍然让我完成所有工作逻辑(容易出错)。
IMO,IntelliJ 应该能够检测到 pom 作为模块包含在何处以及哪些其他模块将其用作依赖项 - 任何人都知道自动执行此操作的方法 - 或者我在这里遗漏了什么?
最佳答案
Replace in Path
(默认为 Ctrl+Shift+R)带有查找文本的操作 <artifactId>OLD-ARTIFACT-ID</artifactId>
和替换 <artifactId>NEW-ARTIFACT-ID</artifactId>
的文本将以最少的误报率自动完成大部分工作,特别是如果您另外配置了正确的文件名过滤器(显然是 pom.xml
)。
详细来说,这里是重命名基于 maven 的模块的完整步骤序列(假设模块的名称与模块所在目录的名称相匹配):
- 注释掉相关的
<module>OLD-ARTIFACT-ID</module>
parent/aggregator poms 中的行,然后允许 IDEA 重新导入项目并允许它从项目中删除排除的模块。最好也删除剩余的 .iml 文件。 - 从
<artifactId>OLD-ARTIFACT-ID</artifactId>
执行搜索和替换至<artifactId>NEW-ARTIFACT-ID</artifactId>
重命名有问题的模块并修复对它的所有依赖项引用。 - 从
<module>OLD-ARTIFACT-ID</module>
执行搜索和替换至<module>NEW-ARTIFACT-ID</module>
修复对它的所有聚合引用。 - 重命名模块目录。
- 取消注释相关的
<module>NEW-ARTIFACT-ID</module>
父/聚合器 POM 文件中的行,然后允许 IDEA 重新导入项目。
如果您觉得 IDEA 缺少一些有用的功能,您应该在 http://youtrack.jetbrains.com/ 创建一个功能请求.在这种特殊情况下,投票给 IDEA-94223 , IDEA-72181和 IDEA-104344 .
关于java - 如何使用 IntelliJ 重构重命名 maven pom artifactId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757048/