【问题标题】:Passing arguments to Maven release build将参数传递给 Maven 发布版本
【发布时间】:2013-04-06 23:48:57
【问题描述】:

我正在尝试使用 Maven 发布一个库并对 sourceforge 执行站点部署(我首先创建了一个交互式 shell)。发布由 Jenkins 作业完成(使用 Jenkins 的 Maven 发布插件)。

我试过了:

-X -e -Dresume=false -Dusername=puce release:prepare release:perform -Darguments="-Dusername=puce"

-X -e -Dresume=false -Dusername=puce -Darguments=-Dusername=puce release:prepare release:perform

但两次作业都挂在 site:deploy 的第一个模块:

 [INFO] --- maven-site-plugin:3.2:deploy (default-deploy) @ myproject-parent ---
 [INFO] Parent project loaded from repository: myGroupId:myOtherproject-parent:pom:1.0
 [INFO] Parent project loaded from repository: myGroupId:myOtherproject-parent:pom:1.0
 Using private key: /opt/jenkins/.ssh/id_dsa

当我停止作业时,最后会打印以下内容:

Password for ${username}@shell.sourceforge.net: channel stopped

这可能意味着 ${username} 未解析。

如何解决 ${username}?

编辑:

请注意,以下运行正常:

site-deploy -Psonatype-oss-release -Dusername=puce

编辑 2: 作为 release:perform maven 的一部分,执行以下命令:

/usr/share/maven/bin/mvn -s /tmp/release-settings7797889802430474959.xml deploy site-deploy --no-plugin-updates --batch-mode -Psonatype-oss-release -P nexus -f pom.xml

-Dusername=puce 似乎没有被传递给这个 maven 命令...

还要注意 help:effective-pom 显示以下 maven-release-plugin 配置:

<plugin>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.2</version>
  <configuration>
    <mavenExecutorId>forked-path</mavenExecutorId>
    <useReleaseProfile>false</useReleaseProfile>
    <arguments>-Psonatype-oss-release</arguments>
  </configuration>
</plugin>

所以'arguments'被定义了,它的值似乎到达了嵌入的maven命令,而不是命令行上传递的值......

【问题讨论】:

标签: java maven jenkins maven-release-plugin


【解决方案1】:

我过去成功做的如下:

  • 在 POM 文件中定义一个属性,例如:

    <properties>
        <release.arguments></release.arguments>
    </properties>
    
  • 在POM文件的插件配置中添加POM属性,例如;

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <arguments>${release.arguments}</arguments>
           ...
    
  • 通过命令行上的属性传递参数,例如:

    mvn release:prepare -Drelease.arguments="-N -Prelease"
    

希望这会有所帮助。

【讨论】:

  • 如果不从命令行传入,有没有办法定义默认值?
  • 是的,在我回答的第一个项目符号下,您可以输入默认值,例如:&lt;properties&gt; &lt;release.arguments&gt;your defaults go here&lt;/release.arguments&gt; &lt;/properties&gt;
  • 我在这里写的类似问题:stackoverflow.com/questions/29088735/…您的解决方案有效。
  • 你知道如何传递应该应用于发布的git标签的名称吗?
  • 我为此使用了buildnumber 插件。
【解决方案2】:

覆盖

<plugin>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.2</version>
  <configuration>
    <mavenExecutorId>forked-path</mavenExecutorId>
    <useReleaseProfile>false</useReleaseProfile>
    <arguments>-Psonatype-oss-release</arguments>
  </configuration>
</plugin>

    <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <mavenExecutorId>forked-path</mavenExecutorId>
            <useReleaseProfile>false</useReleaseProfile>
            <arguments>-Psonatype-oss-release -Dusername=${username}</arguments>
        </configuration>
    </plugin>

其中一位父母成功了。

命令行上的值没有覆盖 POM 中的值似乎是一个错误。

【讨论】:

    【解决方案3】:

    我的解决方案类似于Sander Verhagen's。我只添加了一行。

    我是如何跑步的:

    mvn --batch-mode release:prepare -Denvironment=production
    

    我的配置:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <tag>${artifactId}-${version}-${environment}</tag>
                    <arguments>-Denvironment=${environment}</arguments>
                  <releaseProfiles>release</releaseProfiles>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    不同的是现在我的子模块使用变量environment,我不需要定义它两次(即-Darguments=-Denvironment=production -Denvironment=production)。我还给了我不添加属性标签的灵活性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-12
      • 2016-07-02
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多