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

2022-09-01 23:42:57

我正在使用IntelliJ 13,并有一个Java项目设置,其模块基于maven项目。

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

如果我手动执行此操作,那么我将不得不找到它的所有实例并手动修改它们(例如:它作为模块包含在何处,以及将其用作依赖项的位置)。

由于IntelliJ提供了许多重构技术,我认为pom artifactId属性上的重构>rename将得到支持,但它似乎不是。

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

IMO,IntelliJ应该能够检测pom作为模块包含在何处,以及哪些其他模块将其用作依赖项 - 任何人都知道自动执行此操作的方法 - 或者我在这里缺少一些东西?


答案 1

Replace in Path(默认情况下,Ctrl+Shift+R)要查找文本和要替换的文本的操作将自动完成大部分工作,误报次数最少,尤其是在另外配置正确的文件名筛选器(显然)的情况下。<artifactId>OLD-ARTIFACT-ID</artifactId><artifactId>NEW-ARTIFACT-ID</artifactId>pom.xml

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

  1. 注释掉父/聚合器poms中的相关行,然后允许IDEA重新导入项目并允许它从项目中删除排除的模块。最好也删除剩余的.iml文件。<module>OLD-ARTIFACT-ID</module>
  2. 执行 search&replace from to 以重命名有问题的模块并修复对其的所有依赖项引用。<artifactId>OLD-ARTIFACT-ID</artifactId><artifactId>NEW-ARTIFACT-ID</artifactId>
  3. 执行 search&replace from to 以修复对其的所有聚合引用。<module>OLD-ARTIFACT-ID</module><module>NEW-ARTIFACT-ID</module>
  4. 重命名模块目录。
  5. 取消注释父/聚合器POM文件中的相关行,然后允许IDEA重新导入项目。<module>NEW-ARTIFACT-ID</module>

如果您觉得IDEA错过了一些有用的功能,您应该在 http://youtrack.jetbrains.com/ 创建一个功能请求。在这种特殊情况下,请投票支持 IDEA-94223IDEA-72181IDEA-104344


答案 2

推荐