如何使用IntelliJ重构重命​​名maven pom artifactId?

时间:2014-05-20 10:17:49

标签: java maven intellij-idea

我正在使用IntelliJ 13并使用基于maven项目的模块进行Java项目设置。

我必须重命名一个maven项目,因此我必须在pom文件中更改它的artifactId属性值。

如果我手动执行此操作,则必须手动查找所有出现的内容并手动修改(例如:它作为模块包含在哪里以及用作依赖项的位置)。

由于IntelliJ提供了许多重构技术,我认为将支持refactor->重命名pom artifactId属性,但它似乎不是。

我可以尝试做一个查找/替换..但这仍然让我做所有的工作逻辑(容易出错)。

IMO,IntelliJ应该能够检测到pom作为模块被包含在哪里以及哪些模块将其用作依赖项 - 任何人都知道这样做的自动方式 - 或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:12)

Replace in Path(默认情况下为Ctrl + Shift + R)操作包含要查找<artifactId>OLD-ARTIFACT-ID</artifactId>的文字和要替换<artifactId>NEW-ARTIFACT-ID</artifactId>的文字,我们会自动执行大部分工作,并且误报率最低,尤其是如果您另外配置正确的文件名过滤器(pom.xml,显然)。

详细信息,以下是重命名基于maven的模块的完整步骤序列(假设模块名称与模块所在目录的名称相匹配):

  1. 注释父/聚合器poms中的相关<module>OLD-ARTIFACT-ID</module>行,然后允许IDEA重新导入项目并允许它从项目中删除已排除的模块。最好还删除剩余的.iml文件。
  2. 执行从<artifactId>OLD-ARTIFACT-ID</artifactId><artifactId>NEW-ARTIFACT-ID</artifactId>的搜索和替换,以重命名相关模块,并修复对其的所有依赖项引用。
  3. 执行从<module>OLD-ARTIFACT-ID</module><module>NEW-ARTIFACT-ID</module>的搜索和替换,以修复对其的所有聚合引用。
  4. 重命名模块目录。
  5. 取消注释父/聚合器POM文件中的相关<module>NEW-ARTIFACT-ID</module>行,然后允许IDEA重新导入项目。
  6. 如果您觉得IDEA遗漏了一些有用的功能,您应该在http://youtrack.jetbrains.com/创建功能请求。在这种特殊情况下,请投票选择IDEA-94223IDEA-72181IDEA-104344