【问题标题】:Maven release propertiesMaven 发布属性
【发布时间】:2010-11-02 15:20:35
【问题描述】:

当我们发布项目时,通常每次都是一样的。是否有任何参数或属性可以添加到 release:prepare 以允许以批处理模式发布模式?

例子:

“MyProject”的发布版本是什么? (company.jar.site:myproject) 0.0.1: : 什么是“MyProject”的 SCM 发布标签或标签? (company.jar.site:myproject) MyProject-0.0.1: : “MyProject”的新开发版本是什么? (company.jar.site:myproject) 0.0.2-SNAPSHOT: :

做这样的事情会很好:

mvn -B 发布:执行 -DreleaseVersion:$nextMinorVersion$ 或 mvn -B 发布:执行 -DreleaseVersion:$nextPatchVersion$ 或 mvn -B release:perform -Dtag:v$nextPatchVersion$ 或 mvn -B 发布:执行 -Dtag:v$nextPatchVersion$-someCustomNaming

如果这样的东西尚不存在,我将创建一个自定义 Mojo 来执行此操作。

或者,在上面的提示中,我们通常默认为第一个问题,第二个问题为“v”+当前版本,最后一个问题为下一个小问题。如果我们能以某种方式修改这些,那将解决眼前的问题。

提前致谢。

【问题讨论】:

    标签: java maven-2 release


    【解决方案1】:

    我的做法是Performing a Non-interactive Release Using a properties file

    您在聚合器项目(具有包装:pom 的项目)的根目录中创建一个 release.properties,并为每个项目添加以下形式的两个属性:

    project.rel.<groupId>\:<artifactId>=<releaseVersion>
    project.dev.<groupId>\:<artifactId>=<nextSnapshotVersion>
    

    如果您想为标签使用特定文字,请添加以下属性

    scm.tag=<tagLiteral>
    

    以下是两个都完成的示例(指定每个模块的版本并定义用于在 SCM 中标记的文字):

    scm.tag=my-project-0.2.1
    project.rel.org.monachus.monkeyisland\:my-project=0.2.1
    project.dev.org.monachus.monkeyisland\:my-project=0.2.2-SNAPSHOT
    project.rel.org.monachus.monkeyisland\:module-a=0.1.1
    project.dev.org.monachus.monkeyisland\:module-a=0.1.2-SNAPSHOT
    

    【讨论】:

      【解决方案2】:

      部分答案,在您的comment 之后:

      要更改标签名称,请使用 -Dtag=xxx 参数到 release:prepare。详情请见the release:prepare documentation

      未经测试的代码警告

      要以完全自动化的方式执行此操作,您需要在 pom.xml 中添加一个配置条目,您将在其中设置标签名称:

      <maven-release-plugin>
         <configuration>
             <tag>parent-${releaseVersion}</tag>
         </configuration>
      </maven-release-plugin>
      

      【讨论】:

        【解决方案3】:
        mvn -B release:prepare release:perform
        

        -B 用于批处理模式,它将使用在非批处理模式下提供的默认值。通常对于 X.Y.Z-SNAPSHOT,它会发布 X.Y.Z 并将新快照设置为 X.Y.(Z+1)-SNAPSHOT。

        与所有 maven 一样,您可以与这种命名约定作斗争并有很多头疼的问题,或者屈服并决定您的版本和标签将成为 maven 方式并免费获得很多。我打了它,输了。如果你要使用它,这只是你必须完全放弃给 maven 的众多方法之一。

        我很高兴这样做了,想要强加自己的计划通常不是一个好主意。

        【讨论】:

        • 唯一的问题是我通常想更改提供的标签名称。因为我的父 artifactId 通常是“foo-parent”,我希望标签是 foo-1.2.3 而不是 foo-parent-1.2.3。
        猜你喜欢
        • 2012-09-06
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 2021-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多