如何获取命令行属性来覆盖maven属性

Nor*_*mac 19 maven maven-release-plugin

我有一个pom文件,其中一些依赖项的版本号依赖于pom文件的设置中指定的项目版本属性.我可以通过命令行覆盖它吗?如果是这样,怎么样?

这是长篇故事:

我们目前正在将我们的项目转移到maven,但我们还没有完成任何方式.有多个模块仍然没有使用maven构建,因此是我们项目中的依赖项(它们通过ant构建到jar中).发布后,我们希望构建所有这些jar并包含与父项目相同的版本号.对于发布,执行两个步骤(直到我们可以使用maven获取所有内容)

  1. 这些罐子是用正确的发布版本(12.12.4.0)构建的.
  2. maven发布插件用于将项目部署到我们的工件库.

在第二步中,命令行参数用于指定发行版:

mvn release:prepare -DreleaseVersion=12.12.4.0 -DdevelopmentVersion=12.12.4.1-SNAPSHOT -Dtag=iv-12.12.4.0
Run Code Online (Sandbox Code Playgroud)

我想用指定的版本更新pom文件.但是,运行此命令时,仍在使用pom文件(12.12.4.0-SNAPSHOT)中的版本.这无法"检查快照的依赖项和插件"步骤,我需要解析仍然具有maven版本属性使用的12.12.4.0-SNAPSHOT版本的jar.

这让我想到了如何覆盖它的原始问题,以便版本解析为命令行中指定的版本.可以让我解决的其他问题是:如何在此检查之前允许maven发布插件更新pom文件?如何跳过快照检查(不可取)

我可以在pom文件中创建一个我可以覆盖的属性,但是我必须在pom文件中的两个位置维护版本号.

思考?

And*_*wik 45

从命令行直接将参数放到pom中,例如:

mvn clean install -Dtestng.version=6.3.1

例:

     <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>
Run Code Online (Sandbox Code Playgroud)

如果你运行它通常会使用testng版本6.4.但如果你运行它:mvn clean install -Dtestng.version=6.3.1将使用testng版本6.3.1.

请参阅在Jenkins中设置Maven参数

  • 哇...我真的忽略了简单。你的回答让我意识到我什至没有尝试设置我想在命令行上更改的版本属性。有效!所以我只是添加了一个 -Dversion 或 -Dproject.version=12.12.4.0 (2认同)
  • 要覆盖多个参数,请使用多个-D标志. (2认同)