Maven忽略子pom中的变量

时间:2019-05-31 19:14:55

标签: java build maven-3

我坚持了一段时间。 我正在尝试自动化几个java模块的构建和部署(在nexus3中),并消除了在项目pom中手动设置模块版本的需要。

我的问题是maven忽略了pom文件中的变量。

父pom:

<properties>
  <revision>local</revision>
</properties>

<name>lib-cloud</name>
<groupId>com.company.lib</groupId>
<artifactId>lib-cloud</artifactId>
<version>${revision}</version>
<packaging>pom</packaging>
<modules>
    <module>lib-cloud-main</module>
</modules>

和子pom:

<properties>
    <unrelatedVAR>2017.3.3</unrelatedVAR>
</properties>

<parent>
    <groupId>com.company.lib</groupId>
    <artifactId>lib-cloud</artifactId>
    <version>${revision}</version>
</parent>

<artifactId>lib-cloud-main</artifactId>
<name>lib-cloud-main</name>

然后我用:

mvn -Drevision=3.1 clean package deploy

此构建代码很好,创建一个lib-cloud-main / target / lib-cloud-main-3.1.jar

在罐子旁边,我已经看到了 lib-cloud-main-3.1.jar / maven / com.company.lib / lib-cloud-main / pom.xml具有

<version>${revision}</version>

作为版本,而不是我所期望的3.1,但是此工件仍保存在联系中。

但是,如果我尝试使用它,则maven在尝试获取pom时会抛出错误:

[ERROR] Failed to execute goal on project core-backend-api: Could not resolve dependencies for project com.company.core:core-backend-api:jar:local: Failed to collect dependencies at com.company.lib:lib-cloud-main:jar:3.1: Failed to read artifact descriptor for com.company.lib:lib-cloud-main:jar:3.1: Could not transfer artifact com.company.lib:lib-cloud:pom:${revision} from/to company-maven-public (http://mvn.company.local/repository/maven-public/): Failed to transfer file: http://mvn.company.local/repository/maven-public/com/company/lib/lib-cloud/$%7Brevision%7D/lib-cloud-$%7Brevision%7D.pom. Return code is: 400 , ReasonPhrase:Invalid repository path.

我什至尝试使用

mvn release:update-versions -DdevelopmentVersion=3.1

作为在构建之前用静态值覆盖pom的一种方法,但是此方法仍然无法在任何项目子pom中触摸该标签。

我做错了什么?

  

Apache Maven 3.5.4(Red Hat 3.5.4-4)Maven主页:/ usr / share / maven Java   版本:1.8.0_212,供应商:Oracle Corporation,运行时:   /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.fc29.x86_64/jre   默认语言环境:pt_BR,平台编码:UTF-8操作系统名称:“ linux”,   版本:“ 5.0.17-200.fc29.x86_64”,拱门:“ amd64”,家族:“ unix”

1 个答案:

答案 0 :(得分:0)

您应该使用release plugin来执行此操作。 mvn release:update-versions -DautoVersionSubmodules=true