10

我想自动执行 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 忽略此类输入并使用默认值结束(并且也不提示)。

那么,release:prepare plugin:goal 是否有 -D 参数?

谢谢。

4

4 回答 4

12

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

mvn --batch-mode release:prepare

这将假定您通常会被提示的任何内容的默认值;这就像运行一个版本,每次它问你一个问题时都简单地按回车。例如,如果您当前的项目开发版本是 1.2.3-SNAPSHOT,它将发布 1.2.3 版本并将您的开发版本升级到 1.2.4-SNAPSHOT。通常最好让 Maven 为您解决这些问题,因为 Maven 的目标是使用约定优于配置。但是,您是否需要指定非默认属性,maven-release-plugin 允许命令行属性覆盖以及使用“release.properties”文件覆盖这些设置。

于 2010-05-21T17:50:44.933 回答
4

对于 Maven 部分,请参阅执行非交互式发布

于 2010-05-20T16:54:55.920 回答
1

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

尝试system $cmd;

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

于 2010-05-20T16:56:32.343 回答
0

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

mvn release:prepare -DautoVersionSubmodules=true -DreleaseVersion={你的发布版本} -DdevelopmentVersion={下一个版本}-SNAPSHOT -Dtag={你的标签}

于 2012-12-20T13:26:45.257 回答