Jenkins:如何通过readMavenPom或mvn help:evaluate获取pom.xml中的特定依赖版本?

zour9fqk  于 2023-08-03  发布在  Jenkins
关注(0)|答案(1)|浏览(207)

已经阅读了大量的页面和howto,并了解到readMavenPom返回一个 Model 对象。获取根值很容易,但如何才能获取特定的依赖版本?
使用mvn help:evaluate也没有帮助:我不知道该评估什么才能得到信息。
有人能给予点建议吗?
做了很多测试,但我实际上完全忽略了我应该评估什么。

nr9pn0ug

nr9pn0ug1#

模型对象还包含与依赖关系相关的所有信息:

pipeline{
    
    agent{label "master"}
    stages{
        stage('1'){
            steps{
                script{
                    def pom = """
                    <project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.passfailerror</groupId>
    <artifactId>some-artifact</artifactId>
    <version>1.0.0</version>

    <dependencies>
        <dependency>
            <groupId>com.dependency.one</groupId>
            <artifactId>artifact-name1</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>com.dependency.two</groupId>
            <artifactId>artifact-name2</artifactId>
            <version>2.0</version>
        </dependency>
        </dependencies>
        </project>
                    """
                    
                    writeFile file:"pom.xml", text:pom
                    def model = readMavenPom file:"pom.xml"
                    
                    echo model.getDependencies().findAll{it.artifactId == "artifact-name2"}.first().getVersion()
                    echo model.getDependencies().findAll{it.groupId == "com.dependency.one"}.first().getVersion()
                }
            }
        }
    }
    
}

字符串
您可以通过artifactId、groupId或任何您想要的方式轻松找到每个依赖项的版本。

相关问题