Maven发布属性

时间:2009-06-13 00:06:49

标签: java maven-2 release

当我们发布项目时,它通常每次都是相同的。是否有任何参数或属性可以添加到发布中:准备允许以批处理模式释放模式?

示例:

What is the release version for "MyProject"? (company.jar.site:myproject) 0.0.1: : 
What is SCM release tag or label for "MyProject"? (company.jar.site:myproject) MyProject-0.0.1: : 
What is the new development version for "MyProject"? (company.jar.site:myproject) 0.0.2-SNAPSHOT: : 

做这样的事情会很好:

mvn -B release:perform -DreleaseVersion:$nextMinorVersion$ or
mvn -B release:perform -DreleaseVersion:$nextPatchVersion$ or
mvn -B release:perform -Dtag:v$nextPatchVersion$ or
mvn -B release:perform -Dtag:v$nextPatchVersion$-someCustomNaming 

如果此类内容尚不存在,我将创建一个自定义Mojo来执行此操作。

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

提前致谢。

3 个答案:

答案 0 :(得分:8)

mvn -B release:prepare release:perform

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

与maven一样,你可以对抗这个命名惯例并且有很多令人头疼的问题,或者让步并决定你的版本和标签将成为maven方式并获得免费赠品。我打了它,然后输了。如果你打算使用它,你必须完全放弃maven的众多方法之一。

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

答案 1 :(得分:2)

部分答案,在comment之后:

要更改标记名称,请使用-Dtag=xxx参数release:prepare。有关详细信息,请参阅the release:prepare documentation

未经测试的代码警告

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

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

答案 2 :(得分:1)

我这样做的方式是Performing a Non-interactive Release Using a properties file

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

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