【问题标题】:How to rename maven pom artifactId using IntelliJ refactoring?如何使用 IntelliJ 重构重命名 maven pom artifactId?
【发布时间】:2014-07-08 13:15:53
【问题描述】:

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

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

如果我手动执行此操作,我将不得不找到它的所有出现并手动修改它们(例如:它作为模块包含在哪里以及它在哪里用作依赖项)。

由于 IntelliJ 提供了许多重构技术,我认为 pom artifactId 属性上的 refactor->rename 会被支持,但它似乎并不支持。

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

IMO,IntelliJ 应该能够检测到 pom 作为模块包含在哪里以及哪些其他模块将其用作依赖项 - 任何人都知道自动执行此操作的方法 - 还是我在这里遗漏了什么?

【问题讨论】:

    标签: java maven intellij-idea


    【解决方案1】:

    Replace in Path(默认为 Ctrl+Shift+R)带有查找 <artifactId>OLD-ARTIFACT-ID</artifactId> 的文本和替换 <artifactId>NEW-ARTIFACT-ID</artifactId> 的文本的操作将自动完成大部分工作,并且误报最少,特别是如果您另外配置正确的文件名过滤器(显然是pom.xml)。

    详细来说,这里是重命名基于maven的模块的完整步骤顺序(假设模块的名称与模块所在目录的名称匹配):

    1. 注释掉父/聚合器 pom 中相关的 <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 重新导入项目。

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

    【讨论】:

    • 感谢您的及时回复,我确实可以这样做。我想补充一下,为了保持一致性,我还必须搜索<module>OLD-ARTIFACTID</module>,因为我的项目遵循best practices aaannd 然后我最终不得不将目录重命名为 NEW-ARTIFACTID .. 我想这是值得的功能请求!
    • 嘿@EngineerDollery,我尝试的第一件事是在我能想到的所有东西上按Shift+F6 ...但这根本没有修改pom..
    • 好的,我也删除了我的答案,因为你是对的,它实际上不起作用。似乎是一个错误,因为仅仅为模块设置第二个标题是没有用的。
    • 确实,我忘了提到重命名目录和 引用的必要性。至于在项目树中重命名模块-该操作做某事,但结果比搜索和替换更糟糕。我将更新答案以包括有关目录和父 pom 的信息。
    • 谢谢@OlegEstekhin,这或多或少是我最终重命名模块的方式。不幸的是,我还不能对你的答案进行投票 - 没有足够的声誉:s
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2016-11-30
    • 1970-01-01
    • 2014-12-24
    • 2019-02-24
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多