[英]Use of environment variable in POM.xml doesn't work
我試圖提取POM的版本號以及對環境變量的所有依賴關系。 例如:
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven- 4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance">
<modelVersion>4.0.0</modelVersion>
<artifactId>example-assembly</artifactId>
<name>example-assembly</name>
<properties>
<current.version>${env.CURRENTVERSION}</current.version>
</properties>
<dependencies>
<dependency>
<groupId>com.example.demo</groupId>
<artifactId>exceptions</artifactId>
<version>${current.version}</version>
</dependency>
<dependencies>
<packaging>war</packaging>
<version>${current.version}</version>
</project>
通過上述設置,當我運行mvn clean命令時,出現以下錯誤:
dependencies.dependency.version for example-assembly:war must be a valid version but is '${env.CURRENTVERSION}'
關於可能的問題有什么想法嗎?
注意:我正在Windows OS中運行Maven
與在pom.xml中使用環境變量相比, 在pom.xml中更新Versions有更好的選擇: Versions Maven Plugin 。 這使您可以使用maven命令行更改pom.xml。
項目結構:
+ P(家長-版本1.0.0-快照)
-C1(子項目1-版本1.0.0-快照)
-C2(子項目2-1.0.0-SNAPSHOT版本也取決於C1)
您想要將所有pom.xml文件中的版本更改為1.0.1-SNAPSHOT
<project> <modelVersion>4.0.0</modelVersion> <groupId>sample</groupId> <artifactId>p</artifactId> <version>1.0.0-SNAPSHOT</version> <name>Parent</name> <packaging>pom</packaging> <modules> <module>c1</module> <module>c2</module> </modules> </project>
<project> <modelVersion>4.0.0</modelVersion> <artifactId>c1</artifactId> <name>Child Project 1</name> <packaging>jar</packaging> <parent> <groupId>sample</groupId> <artifactId>p</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> </project>
<project> <modelVersion>4.0.0</modelVersion> <artifactId>c2</artifactId> <name>Child Project 2</name> <packaging>jar</packaging> <parent> <groupId>sample</groupId> <artifactId>p</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>sample</groupId> <artifactId>c1</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> </dependencies> </project>
在所有pom.xml文件中設置新版本的命令
mvn -B -DnewVersion=1.0.1-SNAPSHOT versions:set
如果新版本由環境變量CURRENTVERSION表示
mvn -B -DnewVersion=$CURRENTVERSION versions:set
-B表示--batch-mode(因此不會在控制台上提示新版本)
<project> <modelVersion>4.0.0</modelVersion> <groupId>sample</groupId> <artifactId>p</artifactId> <version>1.0.1-SNAPSHOT</version> <name>Parent</name> <packaging>pom</packaging> <modules> <module>c1</module> <module>c2</module> </modules> </project>
<project> <modelVersion>4.0.0</modelVersion> <artifactId>c1</artifactId> <name>Child Project 1</name> <packaging>jar</packaging> <parent> <groupId>sample</groupId> <artifactId>p</artifactId> <version>1.0.1-SNAPSHOT</version> </parent> </project>
<project> <modelVersion>4.0.0</modelVersion> <artifactId>c2</artifactId> <name>Child Project 2</name> <packaging>jar</packaging> <parent> <groupId>sample</groupId> <artifactId>p</artifactId> <version>1.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>sample</groupId> <artifactId>c1</artifactId> <version>1.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>
您定義的變量僅在同一pom.xml中具有作用域,並且不能在任何其他pom中使用。 如果要全局定義變量,請在maven的settings.xml中對其進行定義。
在同一pom,root pom或settings.xml中的某個位置定義變量env.CURRENTVERSION,或者在其位置提供確切的版本值。
<properties>
<current.version>'your correct version'</current.version>
</properties>
e.g.
<properties>
<current.version>1.0.0</current.version>
</properties>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.