如何在没有提示的情况下提供Maven发布准备信息?

时间:2010-05-20 16:48:32

标签: perl maven-2 maven-release-plugin

我想自动执行Maven版本:使用Perl进行准备,以便用户不必回答版本名称的提示等。是否有可以提供的-D参数,以便不进行提示?我尝试了一个明显的解决方案,即通过perl代码将提示答案提供给mvn:

my $cmd = qq(mvn release:prepare -DautoVersionSubmodules=true-DpreparationGoals="clean install"); 
open MVN, "| $cmd";

print MVN "\n"; # default
print MVN "$cur_version";
print MVN "\n";
print MVN "$next_version";
print MVN "\n";

close MVN;

但是mvn忽略了这样的输入并使用默认值结束(并且也没有提示)。

那么,是否有-D args for release:prepare plugin:goal?

感谢。

4 个答案:

答案 0 :(得分:9)

您可以使用以下maven命令来执行此操作...

mvn --batch-mode release:prepare

这将假定您通常会提示的任何内容的默认值;这就像运行一个版本,每次问你一个问题时只需点击输入。例如,如果您项目的当前开发版本是1.2.3-SNAPSHOT,它将发布版本1.2.3并将您的开发版本移至1.2.4-SNAPSHOT。通常最好让Maven为你解决这个问题,因为maven的目标是使用约定优于配置。但是,您是否需要指定非默认属性,maven-release-plugin allow命令行属性覆盖以及使用'release.properties'文件来覆盖这些设置。

答案 1 :(得分:4)

对于Maven部分,请参阅Performing a Non-interactive Release

答案 2 :(得分:1)

如果它是您寻求的Perl解决方案,则命令行参数通常通过system命令执行。

尝试system $cmd;

据我所知,没有必要打开和关闭文件句柄。

答案 3 :(得分:0)

您可以使用mvn release:prepare命令的参数指定所有内容:

  

mvn release:prepare -DautoVersionSubmodules = true -DreleaseVersion = {your release version} -DdevelopmentVersion = {next version} -SNAPSHOT -Dtag = {your tag}