【问题标题】:Passing a property through Maven from Jenkins to pom.xml通过 Maven 从 Jenkins 向 pom.xml 传递属性
【发布时间】:2021-05-20 21:06:29
【问题描述】:

我正在网上搜索解决问题的方法,几乎​​尝试了所有找到的方法,但仍然没有找到正确的方法。

这是我的问题:

在我的 pom.xml 文件中,我在属性部分有一个用户属性,如下所示:

<properties>
    <carbon.appmgt.version>value-from-command-line</carbon.appmgt.version>
</properties>

此属性在依赖项部分中使用,如下所示:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.wso2.carbon.appmgt</groupId>
            <artifactId>org.wso2.carbon.appmgt.impl</artifactId>
            <version>${carbon.appmgt.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

通过 Jenkins 启动“Maven Perform Release”操作时,必须从命令行读取其值。

在工作构建部分目标和选项是:

-Ddb.username=root  -Ddb.password=paritelWso2  -Dip.adress=emm.sifast.fr -Ddb.connection=com.mysql.jdbc.Driver -Ddb.connection.wso2emmdb=jdbc:mysql://localhost:3306/WSO2DM_DB -Ddb.connection.wso2carbondb=jdbc:mysql://localhost:3306/WSO2CARBON_DB -Ddb.connection.wso2amdb=jdbc:mysql://localhost:3306/WSO2AM_DB?autoReconnect=true&amp;relaxAutoCommit=true clean install

是否有任何解决方案可以通过 maven 命令传递当前版本?

【问题讨论】:

    标签: jenkins properties parameter-passing pom.xml maven-release-plugin


    【解决方案1】:

    对于试图将变量从 Jenkins 管道传递到本地 pom.xml 文件的人,您可以做的是通过 mvn clean install 控制台命令传递参数。

    我在这里所做的是,我传递了一个布尔构建参数值 SKIP_JUNIT_TEST,它可以控制通过参数传递的值。

    你可以这样传递参数:

    sh 'mvn clean install -Dmaven.test.skip=${SKIP_JUNIT_TEST}'
    

    这里的maven.test.skip是我在pom.xml中设置的变量

    【讨论】:

      【解决方案2】:

      问题与我们没有过多关注的一个小细节有关: 我必须使用:

      -Dargeuments='-Dcarbon.appmgt.version=X.Y.Z'
      

      而不是:

      -Dargeuments="-Dcarbon.appmgt.version=X.Y.Z"
      

      【讨论】:

        【解决方案3】:

        首先,要使用 Jenkins 和 Maven 发布插件指定一些系统属性,您必须使用 -Darguments 属性。

        由于 Maven 分叉了发布过程,Maven 没有使用来自构建部分的信息。

        在 Maven 发布部分,您必须进行如下设置:

        (请同时添加所有相关属性,如 db.username,...)

        Jenkins 会影响 Maven 系统属性 carbon.appmgt.version 的值 1.2.3。

        接下来,您只需删除 Maven pom.xml 文件中的属性部分(因为 Jenkins 将直接设置 carbon.appmgt.version 的值)。

        它应该做的工作:)

        【讨论】:

        • 嗨@Bruno,感谢您的回复,但我认为这不是正确的解决方案,因为我仍然收到多行此错误:[ERROR] 'dependencies.dependency.version' for org.wso2.carbon.appmgt:org.wso2.carbon.appmgt.api:jar must be a valid version but is '${carbon.appmgt.version}'. @ org.wso2.carbon.appmgt:carbon-appmgt:1.1.2-SNAPSHOT, /var/lib/jenkins/workspace/EMM-WSO2-V2-APPMGT_-_Livraison/pom.xml, line 294, column 14
        • 我已经尝试过投票,但 Stackoverflow 上的信誉系统不允许我:( 抱歉
        猜你喜欢
        • 2011-11-22
        • 2016-01-12
        • 1970-01-01
        • 2016-05-14
        • 2017-08-20
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        • 2013-09-05
        相关资源
        最近更新 更多