gpt4 book ai didi

java - 更新聚合根不是父 pom 的多模块 Maven 项目中模块的版本号

转载 作者:行者123 更新时间:2023-12-01 08:55:55 26 4
gpt4 key购买 nike

我想为我的项目设置一个发行版本。我对所有模块使用聚合 pom。每个模块父级都不是前面提到的聚合pom。

我的问题与 Updating version numbers of modules in a multi-module Maven project 不同问题,聚合 pom 也是父 pom。

聚合的 pom.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>aggregate</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>

<modules>
<module>module1</module>
</modules>

</project>

module1 pom.xml 的位置:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>module-1</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>com.example</groupId>
<artifactId>parent1</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../../parent1/pom.xml</relativePath>
</parent>

</project>

当我执行时:

mvn versions:set -DnewVersion=0.0.1

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] module-1
[INFO] aggregate
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building aggregate 0.0.1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- versions-maven-plugin:2.3:set (default-cli) @ aggregate ---
[INFO] Searching for local aggregator root...
[INFO] Local aggregation root: C:\Users\maxim.kirilov\workspace\maven-games\aggregate
[INFO] Processing change of com.example:aggregate:0.0.1 -> 0.0.1
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] module-1 ........................................... SKIPPED
[INFO] aggregate .......................................... SUCCESS [ 0.962 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

为什么要跳过 module-1?我读到一些文章建议分别为每个模块调用 maven set version 命令,maven 是否支持更清晰的解决方案?

最佳答案

最近(2017 年 9 月 23 日)版本 Maven 插件中添加了文档。为了更新聚合项目下的所有项目,您需要添加补充命令行参数:

mvn versions:set -DnewVersion=0.0.1 -DoldVersion=* -DgroupId=* -DartifactId=*

这是必需的,否则版本过滤器(通过 -DoldVersion=)会过滤掉该模块,因为它的版本与其他模块不同。此外,您还需要添加-DgroupId=和-DartifactId=*,否则module-1也会根据groupId和artifactId的差异被过滤掉。

关于java - 更新聚合根不是父 pom 的多模块 Maven 项目中模块的版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42039285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com