是否可以使用mvn命令访问pom.xml文件中的标签?

时间:2017-01-26 21:06:51

标签: maven jenkins

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <twilio-version>6.3.0</twilio-version>
</properties>

假设我在pom.xml中有上面的设置,是否可以从中获取java版本?

我的想法是让Jenkins / JenkinsFile运行一些说'maven GRAB_PARAM PARAM_NAME'的方法并使用任何值来设置它的构建环境。

所以我的JenkinsFile会是:

node {
    stage 'Clean Up'
    deleteDir()

    stage 'Env Setup'
    def mvnHome = tool '3.0.3'
    env.JAVA_HOME = THE_MVN_COMMAND_THAT_CAN_GRAB_VERSION_FROM_POM

    stage 'Compile/Package'
    checkout scm
    sh "${mvnHome}/bin/mvn clean install -DskipTests"
}

我也想使用它,所以我可以轻松地从之前的构建中获取构建版本等......

2 个答案:

答案 0 :(得分:2)

maven-help-plugin and its goal evaluate可能就是您所需要的。

这样的东西
mvn org.apache.maven.plugins:maven-help-plugin:2.2:evaluate -Dexpression=project.version

将输出项目版本。

答案 1 :(得分:2)

是的,您可以使用Maven帮助插件及其evaluate Mojo:

  

评估用户以交互模式提供的Maven表达式。

mvn help:evaluate -Dexpression=java.version

对于版本高达2.2,这有一个不幸的情况是用它打印大量信息,可以通过在Windows上将结果传递给| findstr /v "[INFO]"| grep -v "[INFO]"或Unix-来过滤掉线系统。

从3.0.0版开始,您可以使用

mvn help:evaluate -Dexpression=java.version -Doutput=result.txt

将评估的输出重定向到文件。截至今天,3.0.0仍然处于SNAPSHOT状态,因此您可以将插件存储库添加到您的设置或POM,允许快照,并指向https://repository.apache.org/content/repositories/snapshots/处的Apache快照存储库。