如何在Adobe Cloud Manager流水线中覆盖Maven的-DnewVersion参数效果
解决Adobe Cloud Manager流水线中Versions插件强制修改子模块版本的问题
以下是几种无需修改流水线命令,仅通过pom配置即可保留子模块原版本的方法:
方法1:在父pom中排除指定子模块
在父pom的构建插件配置里,给versions-maven-plugin添加排除规则,指定不需要修改版本的子模块:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>2.6</version> <configuration> <!-- 格式为groupId:artifactId,可添加多个排除项 --> <excludes> <exclude>你的组ID:子模块A</exclude> <exclude>你的组ID:子模块B</exclude> </excludes> </configuration> </plugin> </plugins> </build>
执行流水线命令时,被排除的子模块版本会保持pom中定义的原值。
方法2:在子模块中跳过Versions插件
针对需要保留版本的子模块,在其pom中配置跳过versions插件的执行:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <configuration> <!-- 跳过当前模块的版本修改操作 --> <skip>true</skip> </configuration> </plugin> </plugins> </build>
这种方式适合仅个别子模块需要保留版本的场景。
方法3:用属性固定子模块版本
将子模块版本独立定义为pom属性,避免继承父模块版本,同时配置Versions插件不修改这些属性:
- 在父pom中定义版本属性:
<properties> <parent.version>5.10.0</parent.version> <submodule-a.version>1.2.3</submodule-a.version> <submodule-b.version>4.5.6</submodule-b.version> </properties>
- 子模块pom中使用自身版本属性:
<version>${submodule-a.version}</version>
- 在父pom的Versions插件配置中排除这些子模块版本属性:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <configuration> <propertyExcludes> <propertyExclude>submodule-a.version</propertyExclude> <propertyExclude>submodule-b.version</propertyExclude> </propertyExcludes> </configuration> </plugin>
此方法适合版本依赖属性管理的项目,既能统一管理版本,又能避免子模块版本被强制覆盖。
内容的提问来源于stack exchange,提问作者AWS_Beginner
相关产品推荐
相关产品推荐

