gpt4 book ai didi

java - 在 POM.xml 中使用环境变量不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:29 25 4
gpt4 key购买 nike

我正在尝试提取 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 操作系统中运行 Maven

最佳答案

与在 pom.xml 中使用环境变量相比,更新 pom.xml 中的版本有更好的替代方案:Versions Maven Plugin 。这允许您使用 maven 命令行更改 pom.xml。

示例场景

项目结构:
+ P(父级 - 版本 1.0.0-SNAPSHOT)
-- C1(子项目 1 - 版本 1.0.0-SNAPSHOT)
-- C2(子项目 2 - 版本 1.0.0-SNAPSHOT 也依赖于 C1)

任务

您想要将所有 pom.xml 文件中的版本更改为 1.0.1-SNAPSHOT

父pom.xml


<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>

子项目 1 pom.xml


<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>

子项目 2 pom.xml


<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 (这样控制台上不会提示新版本)

生成的文件将是

父pom.xml


<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>

子项目 1 pom.xml


<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>

子项目 2 pom.xml


<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>

关于java - 在 POM.xml 中使用环境变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26985252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com