我有一个 pom 文件,其中某些依赖项的版本号依赖于项目版本pom 文件设置中指定的属性。我可以通过命令行覆盖它吗?如果是这样,怎么办?
这是一个很长的故事:
我们目前正在将项目转移到 Maven,但还没有完全实现。有多个模块仍然不是使用 maven 构建的,因此是我们项目中的依赖项(它们通过 ant 构建到 jar 中)。发布后,我们希望构建所有这些 jar 并包含与父项目相同的版本号。对于发布,需要执行两个步骤(直到我们可以使用 Maven 获取所有内容)
- 这些 jar 是在 ant 中构建的,具有正确的发行版本 (12.12.4.0)。
- Maven 发布插件用于将项目部署到我们的工件存储库。
在第二步中,命令行参数用于指定版本:
mvn release:prepare -DreleaseVersion=12.12.4.0 -DdevelopmentVersion=12.12.4.1-SNAPSHOT -Dtag=iv-12.12.4.0
我希望 pom 文件更新为指定的版本。但是,当运行此命令时,pom 文件中的版本 (12.12.4.0-SNAPSHOT) 仍在使用。这会导致“检查快照的依赖项和插件”步骤失败,并且我需要解析仍具有 Maven 版本属性中使用的 12.12.4.0-SNAPSHOT 版本的 jar。
这让我想到了最初的问题:如何覆盖它,以便版本解析为命令行上指定的版本。
可以帮助我解决这个问题的其他问题是:
如何让maven发布插件在此检查之前更新pom文件?
如何跳过快照检查(不可取)
我可以在 pom 文件中创建一个可以覆盖的属性,但随后我必须在 pom 文件中的两个位置维护版本号。
想法?
从命令行直接将参数添加到 pom 例如:
mvn clean install -Dtestng.version=6.3.1
Example:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>1.0.0</version>
<name>test</name>
<properties>
<testng.version>6.4</testng.version>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
如果正常运行,将使用 testng 版本 6.4。但如果你像这样运行它:mvn clean install -Dtestng.version=6.3.1
将使用 testng 版本 6.3.1。
See 在 Jenkins 中设置 Maven 参数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)