代码之家  ›  专栏  ›  技术社区  ›  tryingHard

maven属性未被-dParam.version重写

  •  0
  • tryingHard  · 技术社区  · 7 年前

    当我执行时: mvn -Dparam.version=9 help:effective-pom | clip 在命令行中打开 Windows 10 我只看到这个片段:

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

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

    在命令中:

    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 回复  |  直到 7 年前
        1
  •  1
  •   xingbin    7 年前

    首先,你需要使用 -Dparam.version 相反 -dParam.version .

    如果

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

    定义在 xxx.pom 文件,你不能 改变 它使用命令行,而您可以自由地 覆盖 它。在这种情况下,尽管 4 在pom文件中,其他引用它的 ${param.version} 将选择 9 .

        2
  •  1
  •   Steve C    7 年前

    在检查命令行参数是否已正确应用时,您所看到的位置不正确。

    如果您输入了命令 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属性中指定的版本。