-dParam.version不会覆盖maven属性

时间:2018-12-04 13:12:40

标签: java maven pom.xml

当我执行时: mvn -Dparam.version=9 help:effective-pom | clipWindows 10的命令行中,我只能看到整个剪辑:

<properties>
      <param.version>4</param.version>
</properties> 

这是旧版本。 我该如何强制更改此参数?

在cmd中:

mvn --version
Apache Maven 3.5.4

来自poms:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
</plugin>

编辑: 我使用此属性来设置礼拜版本,例如:

<dependency>
    <groupId>x</groupId>
    <artifactId>c-api/artifactId>
    <version>${param.version}</version>
</dependency>

c-api内部,我们可以看到:

<?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>

    <parent>
        <groupId>x</groupId>
        <artifactId>c</artifactId>
        <version>4</version>
    </parent>

    <artifactId>c-api</artifactId>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>x</groupId>
            <artifactId>c-api</artifactId>
        </dependency>

        <dependency>
            <groupId>x</groupId>
            <artifactId>p-api</artifactId>
        </dependency>

        <dependency>
            <groupId>x</groupId>
            <artifactId>f-api</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

2 个答案:

答案 0 :(得分:1)

首先,您需要使用-Dparam.version而不是-dParam.version

如果

<properties>
    <param.version>4</param.version>
</properties

是在xxx.pom文件中定义的,不允许您使用命令行更改它,而您可以随意覆盖。并且在这种情况下,尽管pom文件中的值仍为4,但其他由${param.version}引用它的人也会选择9

答案 1 :(得分:1)

检查命令行参数是否正确应用时,您正在寻找错误的位置。

如果输入命令mvn -Dparam.version=9 help:effective-pom,则应该看到正确评估了依赖项版本。

您的pom所在的地方

...
<dependency>
    <groupId>x</groupId>
    <artifactId>c-api</artifactId>
    <version>${param.version}</version>
</dependency>
...

该命令的输出将显示

...
<dependency>
    <groupId>x</groupId>
    <artifactId>c-api</artifactId>
    <version>9</version>
</dependency>
...

如果您只运行mvn help:effective-pom,将会看到

...
<dependency>
    <groupId>x</groupId>
    <artifactId>c-api</artifactId>
    <version>4</version>
</dependency>
...

而是显示pom属性中指定的版本。