在我们的项目,我们有大约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
将所有版本的<dependencyManagement>
在父POM:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>THEGROUPID</groupId>
<artifactId>THEARTIFACT</artifactId>
<version>THE-VERSION</version>
</dependency>
</dependencies>
</dependencyManagement>
在此,你不需要到添加<version>
标记你的孩子劲歌。
编号: dependencyManagement (向下滚动)
使用versions-maven-plugin
,其set
魔力:
cd <your-super-parent-pom>
mvn versions:set -DoldVersion=1-SNAPSHOT -DnewVersion=2-SNAPSHOT
然而,这个插件有一定的局限性。 它不与某些(复)结构应对其中POM继承是复杂的,而且我也不能肯定是否处理财产引用。
里面有类似功能maven-release-plugin
。 它可能有小幅走高的机会更好地发挥作用,因为它更频繁地使用 - 和AFAIK代码不共享 - 但我有这个没有直接的经验。 我观察过很多版本与正确的版本重新编号在相当困难的情况下...
我写我自己的工具来做到这一点。 这就是所谓的“鞍马”,你可以在这里:
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文件找到它的指定目录下。