首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个Maven项目的maven POM版本管理

多个Maven项目的maven POM版本管理
EN

Stack Overflow用户
提问于 2011-12-12 01:38:50
回答 3查看 3.7K关注 0票数 1

在我们的项目中,我们有大约25个maven项目,每个项目至少包含3个模块项目和一个父POM。所以总共有大约(25 *4) 100个POM文件。有没有简单的方法来维护POM变更版本?因此,这项任务变得单调乏味。这一定是整个软件开发过程中的常见问题吧?

有没有人有脚本或工具来完成此版本的更改以处理以下3种情况?

代码语言:javascript
复制
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,但不是循环依赖)。因此,当我们更改其中一个库的版本时,它需要在所有maven模块的父POM.....因此,我一直在寻找能够在各种POMs中实现这一点的工具,而不仅仅是一个多模块项目(发布插件将只发布一个maven多模块项目)。我希望这会对这个问题有更好的理解。

基本上,我正在寻找linux SED类型的命令,但为特定的groupid和artifactid。

谢谢,

Bmis13

EN

回答 3

Stack Overflow用户

发布于 2011-12-12 05:11:25

<dependencyManagement>中的所有版本放入您的父pom中:

代码语言:javascript
复制
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>THEGROUPID</groupId>
      <artifactId>THEARTIFACT</artifactId>
      <version>THE-VERSION</version>
    </dependency>
  </dependencies>
</dependencyManagement>

因此,您不需要将<version>标记添加到您的子poms中。

参考:dependencyManagement (向下滚动)

票数 6
EN

Stack Overflow用户

发布于 2012-11-07 07:29:55

versions-maven-plugin与其set mojo一起使用:

代码语言:javascript
复制
cd <your-super-parent-pom>
mvn versions:set -DoldVersion=1-SNAPSHOT -DnewVersion=2-SNAPSHOT

然而,这个插件有一些限制。它不能处理某些(复杂)结构,其中pom继承很复杂,我也不确定它是否处理属性引用。

maven-release-plugin中也有类似的功能。它可能有更高的机会更好地工作,因为它使用得更频繁- AFAIK代码不是共享的-但我对此没有直接经验。我只是观察到许多版本在相当困难的情况下进行了正确的版本重新编号……

票数 2
EN

Stack Overflow用户

发布于 2012-09-23 00:40:36

我写了我自己的工具来做这件事。它叫'pommel‘,你可以在这里买到:

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

您可以定义一个映射文件并从命令行运行它。

代码语言:javascript
复制
java -jar pommel-1.0.0.jar -iC:\Development\java\projects -mmapping.xml

映射文件采用以下形式:

代码语言:javascript
复制
<?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文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8466033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档