Maven的POM版本管理多个Maven项目(Maven POM version managemen

2019-09-28 20:22发布

在我们的项目,我们有大约25 Maven项目和他们中的每一个包含至少3个模块项目和一个父POM。 所以总的大约(25 * 4)100 POM文件。 有没有简单的方法来保持POM变化版本? 所以这个任务变得乏味和枯燥的任务。 这必须是整个软件开发的通病?

有没有人有脚本或工具来做到这个版本的变化来处理如下3种情况?

1)  
    <dependency>
      <groupId>THEGROUPID</groupId>
      <artifactId>THEARTIFACT</artifactId>
      <version>THE-VERSION</version>
    </dependency>

2)
    <dependency>
      <groupId>THEGROUPID</groupId>
      <artifactId>THEARTIFACT</artifactId>
      <version>$(version.number)</version>
    </dependency>
3)
  <parent>
    <groupId>THEGROUPID</groupId>
    <artifactId>THEARTIFACT</artifactId>
    <version>THE-VERSION</version>
  </parent>

我们有25个Maven项目,每一个对彼此(通过父POM而不是循环依赖)的依赖,它们之间。 所以,当我们换一个版本的lib之一,它需要整个改变了所有的行家模块父POM中.....所以,我一直在寻找的工具,可以在整个多金属氧酸盐的不只是一个穆蒂的愤怒达到这个-module项目(发布插件只会释放,一个行家穆蒂模块项目)。我希望这将有更好的理解这一问题..

基本上,我正在寻找Linux的SED命令的类型,但对于具体的groupId和artifactId的。

谢谢,

Bmis13

Answer 1:

将所有版本的<dependencyManagement>在父POM:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>THEGROUPID</groupId>
      <artifactId>THEARTIFACT</artifactId>
      <version>THE-VERSION</version>
    </dependency>
  </dependencies>
</dependencyManagement>

在此,你不需要到添加<version>标记你的孩子劲歌。

编号: dependencyManagement (向下滚动)



Answer 2:

使用versions-maven-plugin ,其set魔力:

cd <your-super-parent-pom>
mvn versions:set -DoldVersion=1-SNAPSHOT -DnewVersion=2-SNAPSHOT

然而,这个插件有一定的局限性。 它不与某些(复)结构应对其中POM继承是复杂的,而且我也不能肯定是否处理财产引用。

里面有类似功能maven-release-plugin 。 它可能有小幅走高的机会更好地发挥作用,因为它更频繁地使用 - 和AFAIK代码不共享 - 但我有这个没有直接的经验。 我观察过很多版本与正确的版本重新编号在相当困难的情况下...



Answer 3:

我写我自己的工具来做到这一点。 这就是所谓的“鞍马”,你可以在这里:

http://code.google.com/p/pommel/

您定义的映射文件,并在命令行中运行,即它

java -jar pommel-1.0.0.jar -iC:\Development\java\projects -mmapping.xml

映射文件的形式为:

<?xml version="1.0"?>
<mappings>
  <mapping>
    <dependency-source>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>*</version>
    </dependency-source>
    <dependency-target>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
        <scope>test</scope>
    </dependency-target>
  </mapping>

</mappings>

这将替换所有引用与指定依赖目标的JUnit。 不是你可以使用依赖源定义外卡。 它将应用映射到所有被POM文件找到它的指定目录下。



文章来源: Maven POM version management for multiple maven projects
标签: maven pom.xml