当我执行时:
mvn -Dparam.version=9 help:effective-pom | clip
在Windows 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>
答案 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属性中指定的版本。