执行非交互式发布

在某些环境中,可能需要执行非交互式发布。这意味着发布插件将从系统属性(在命令行上设置)或属性文件(release.properties)获取所需的参数。

为了防止 Release Plugin 提示用户输入任何信息,Maven 应该进入批处理模式。

mvn -B release:prepare

要么

mvn --batch-mode release:prepare

使用系统属性

在没有其他配置的情况下使用批处理模式将导致发布插件使用发布版本、SCM 标签和下一个开发版本的默认值。这些值也可以从命令行设置。

可以使用tag属性设置 SCM 标签名称。发布版本和新开发版本的默认值可以分别使用属性releaseVersiondevelopmentVersion设置。

mvn --batch-mode -Dtag=my-proj-1.2 release:prepare \
                 -DreleaseVersion=1.2 \
                 -DdevelopmentVersion=2.0-SNAPSHOT

多模块发布

因为一个发布可能包含多个发布版本和 SNAPSHOT 版本(对于多模块项目),所以有一个特定的格式来设置这些值。对于发布版本,属性名称应以project.rel开头,对于新开发版本,应以project.dev开头。这些前缀后跟项目的 groupId 和 artifactId(用冒号分隔)。所以结果看起来像下面的例子。

mvn --batch-mode -Dtag=my-proj-1.2 -Dproject.rel.org.myCompany:projectA=1.2 \
     -Dproject.dev.org.myCompany:projectA=1.3-SNAPSHOT release:prepare

使用此约定,可以在命令行上指定多个发布版本和 SNAPSHOT 版本(每个项目模块一个)。

这些属性可以与releaseVersiondevelopmentVersion结合使用。在两者都使用的情况下,releaseVersiondevelopmentVersion充当未使用groupId:artifactId格式赋予特定值的模块的默认值。

使用属性文件

另一种选择是创建一个包含您要发布的项目的版本信息的属性文件。属性文件应该称为release.properties,并且发布和 SNAPSHOT 版本遵循与命令行相同的约定。

scm.tag=my-proj-1.2
project.rel.org.myCompany\:projectA=1.2
project.dev.org.myCompany\:projectA=1.3-SNAPSHOT

注意:请记住用反斜杠转义冒号,否则将无法正确解释该属性。