【问题标题】:Renaming groupId in maven在maven中重命名groupId
【发布时间】:2013-11-17 22:30:26
【问题描述】:

我正处于一个多模块 Maven3 项目的重构和内部维护过程中,我需要重命名一些工件的 groupId 和 artifactId。

有没有办法同时重命名 groupId 和 artifactId?
我知道我可以使用 sed 之类的查找和替换工具,但我想知道是否有类似 versions-maven-plugin 的 mojo(例如:mvn versions:set -DnewVersion=1.0.3-SNAPSHOT)但用于 groupId 和 artifactId。

【问题讨论】:

  • 我不知道有什么工具或 maven 插件可以做到这一点。我通常使用 IDE 及其搜索和替换功能。如果您将 groupId 用于多个 artifactId,请小心。
  • 我最终使用了 sed:find ~/project/trunk -name "pom.xml" | xargs sed -i 's/<groupId>org.old.groupId<\/groupId>/<groupId>org.new.groupId<\/groupId>/g'。它就像一种魅力,但我仍然很好奇外面是否有魔力。
  • 出于好奇我发现:docs.codehaus.org/display/MAVENUSER/PomMavenPlugin 但它似乎有点老了:)
  • 谢谢!这正是我想要的。很遗憾它几乎被遗弃了......
  • @wemu 您应该添加一个答案。其他提出相同问题的人更难找到解决问题的评论????

标签: java maven refactoring


【解决方案1】:

这是我知道的唯一方法。

首先根据您要在 pom 中指定的新 groupId 创建并移动所有 java 源。将项目文件夹重命名为新的 artifactId。根据新的 artifactId 更新 .project 文件。

现在右键单击 Eclipse 中的项目并更新 maven 项目。如果它更新没有任何错误,你很高兴。

【讨论】:

    【解决方案2】:

    有没有办法同时重命名 groupId 和 artifactId?

    截至今天,您的问题的答案很简单:

    • 不,没有这样的重命名插件。

    编写自己的 Maven 插件

    不过,我猜你或许可以编写这样一个 maven 插件。

    您可以在 Mojo 中包含此字段:

        @Parameter(defaultValue = "${project}", readonly = true)
        @SuppressWarnings("UnusedDeclaration")
        private MavenProject project;
    

    MavenProject 类具有您正在寻找的方法(setArtifactId 等)。

    事实上,来自 maven-version-plugin 的 SetMojo 会为你做这件事。


    只要有这样的插件,这个答案就会更新。

    【讨论】:

      【解决方案3】:

      简单的解决方案是使用 textpad 或 notepad++ 或其他工具,如您所说的 sed 并在文件中使用 find 并替换组 ID 和工件 ID。

      【讨论】:

      • 我认为 asker 正在寻找一种解决方案,它不使用文本编辑器,而是一种旨在更改组和工件 ID 的特定工具。
      • 是的,(虽然很久以前)这个想法是批量更新几个子项目(pom.xml),希望使用 maven 并避免手动编辑。
      • 这是一种手动方法,我们正在为此寻找自动化解决方案。
      猜你喜欢
      • 2020-03-11
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 2018-09-30
      • 2012-05-30
      • 1970-01-01
      相关资源
      最近更新 更多