[英]Get pom.xml property from CommandLine
我目前正在为我们的 Gitlab CI 编写一个脚本,它会自动将文件上传到 .network 中的 NFSShare 文件夹。 因为我想组织构建并且我们使用的是 maven,所以我想我可以“轻松地”从 pom.xml 中获取项目名称。
有没有办法通过命令行工具或其他工具从 pom.xml 中获取可用属性? 我唯一能想到的另一种方法是“手动正则表达式 grepping 值”——在我看来这不是一个非常干净的解决方案。
我已经找到了属性插件,但它似乎只能通过 actual.properties 文件添加新属性...
任何帮助将非常感激!
我知道这个问题很老,但我花了一些时间寻找这个。
要过滤输出,您可以使用标志“-q -DforceStdout”,其中“-q”阻止输出,“-DforceStdout”强制输出插件的结果。 例如:
BUILD_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
echo $BUILD_VERSION
将导致从 POM 打印项目版本。
我遇到的第二个重要问题是访问“属性”,这在 Nick Holt 评论中进行了解释。 要访问属性,您只需直接访问它们
<project ...>
<version>123</version>
(...)
<properties>
(...)
<docker.registry>docker.registry.com</docker.registry>
(...)
</properties>
(...)
</project>
错误的
mvn help:evaluate -Dexpression=project.properties.docker.registry -q -DforceStdout
好的
mvn help:evaluate -Dexpression=docker.registry -q -DforceStdout
如果您知道所需属性的名称,则可以通过以下方式获取值:
mvn help:evaluate -Dexpression=[property-name] | findstr /R ^^[^^\[INFO\]]
例如:
mvn help:evaluate -Dexpression=basedir | findstr /R ^^[^^\[INFO\]]
将输出:
C:\Users\nick\Local\Projects\example
这显然假设您在 Windows 机器上构建,其中findstr
删除了 Maven 在运行时所做的所有其他日志记录。 你可以在 Unix 上用grep
做类似的事情,但我把它留给你。
您可以尝试以下选项github.com/jkot
https://gist.github.com/jkot/8668441#echo-all-available-maven-properties
<!-- pom.xml -->
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echoproperties />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
运行mvn validate
你会得到所有的属性
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.