Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Maven目标中传递属性值无效。pom.xml变量不反映在maven存储库中的工件pom.xml中_Maven - Fatal编程技术网

在Maven目标中传递属性值无效。pom.xml变量不反映在maven存储库中的工件pom.xml中

在Maven目标中传递属性值无效。pom.xml变量不反映在maven存储库中的工件pom.xml中,maven,Maven,我试图在运行时从maven中的命令行获取依赖项版本,但它并没有反映到maven存储库中的工件pom中 我的项目pom如下:- <parent> <groupId>com.company.project</groupId> <artifactId>parentProject</artifactId> <version>5.6.0.14</version> </parent>

我试图在运行时从maven中的命令行获取依赖项版本,但它并没有反映到maven存储库中的工件pom中

我的项目pom如下:-

  <parent>
    <groupId>com.company.project</groupId>
    <artifactId>parentProject</artifactId>
    <version>5.6.0.14</version>
  </parent>

    <properties>
            <my.version>${my.version}</my.version>
    </properties>

      <groupId>com.company.project</groupId>
      <artifactId>childProject</artifactId>

      <dependencies>

                <dependency>            
                <artifactId>someArtifact_one</artifactId>
                <groupId>com.company.project</groupId> 
                <version>${my.version}</version>
                </dependency>

                <dependency>            
                <artifactId>someArtifact_one</artifactId>
                <groupId>com.company.project</groupId> 
                <version>${my.version}</version>
                </dependency>          

        </dependencies>

com.company.project
父项目
5.6.0.14
${my.version}
com.company.project
儿童项目
一些人造物品
com.company.project
${my.version}
一些人造物品
com.company.project
${my.version}
我的命令类似于-mvn install-Dmy.version=5.6.0.12,项目已成功构建并上载到maven存储库,但当我在maven存储库中验证工件pom.xml时,它与之相同

<dependency>            
    <artifactId>someArtifact_one</artifactId>
    <groupId>com.company.project</groupId> 
    <version>${my.version}</version>
</dependency>   

一些人造物品
com.company.project
${my.version}
我认为它应该像下面的maven存储库一样

<dependency>            
    <artifactId>someArtifact_one</artifactId>
    <groupId>com.company.project</groupId> 
    <version>5.6.0.12</version>
</dependency>   

一些人造物品
com.company.project
5.6.0.12

我如何解决这个问题,或者如果有人对此问题有其他解决方案,请提出建议。

这主要是因为,您在goal
-Dmy.version=5.6.0.12
中使用pom.xml中的properties标记过度写入了传递的值。要修复它,您可以完全删除此属性标记(或按如下方式设置)

<properties>
        <my.version>5.6.0.12</my.version>
</properties>

5.6.0.12

另一种方法是在CI环境中将参数传递为:
-Darguments=“-Dparam1=val1-Dparam2=val2”

如本文所述:

${my.version}
覆盖您在目标中传递的值。检查我关于fixhi Thanga的回答谢谢你的回答,我已经尝试过删除属性标记,但它不起作用,你的建议是在版本标记中给出硬编码值,我不想这样做,因为我有10个模块有这个版本(我从命令行传递的相同版本,还有一些模块有相互依赖性),对于任何人来说,在所有10个pom中更改一个版本都是一件乏味的事情。删除属性标签意味着删除内部标签。我的意思是完全删除
${my.version}
并检查。如果您在父pom中也有此属性,那么也必须删除它
com.company.project.parentProject
我也这么做了!