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

标签 java maven intellij-idea

我正在使用 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 的模块的完整步骤序列(假设模块的名称与模块所在目录的名称相匹配):

  1. 注释掉相关的<module>OLD-ARTIFACT-ID</module> parent/aggregator poms 中的行,然后允许 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. 取消注释相关的 <module>NEW-ARTIFACT-ID</module>父/聚合器 POM 文件中的行,然后允许 IDEA 重新导入项目。

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

关于java - 如何使用 IntelliJ 重构重命名 maven pom artifactId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757048/

相关文章:

java - 在 eclipse 中将 JFreeChart 添加到 Maven

maven - 调试远程 Java 应用程序时,IntelliJ 单步执行错误的行

java - 如何在 Intellij 中以 Debug模式启动 Jboss 5.1.0.GA 以进行远程调试

intellij-idea - 如何将 PyCharm 字体设置回默认大小?

Java 枚举值字段在定义之外不可访问

java - 在将消息添加到 jms 队列之前如何从 ESB 向发送者发送响应

java - 尝试将 GET 项目从 2.5.1 升级到 2.8.1

java - 使用 unpack200 后验证错误

java - Spring 4 - HTTP 状态 400,所需参数不存在

android-studio - Android Studio IDE - 如何更改焦点选项卡颜色