通过命令行设置Maven版本插件的developerConnection

时间:2018-12-05 17:00:59

标签: maven maven-release-plugin maven-scm

我目前正在尝试为我们的构建服务器配置Maven版本插件。

为此,我尝试通过命令行设置<scm><developerConnection>。我读过

project.scm.developerConnection

是命令行属性(https://maven.apache.org/guides/mini/guide-releasing.html)。我尝试设置它,但似乎没有效果。当我开始构建时,它使用一个失败的构造URL(父pom url + artifactId)。

我看了看插件的源代码,但是没有找到上面提到的命令行属性。

有人可以阐明这一点吗?

2 个答案:

答案 0 :(得分:0)

运行mvn release:prepare时,Maven会分叉。命令行中提供的参数将传递给初始Maven调用(您/构建服务器运行的调用),而不传递给fork。

要将args传递到发布插件,请提供arguments,如下所示:

mvn release:prepare -Darguments="-Dproject.scm.developerConnection=..." ...

根据我要执行的操作,有时必须在两个位置进行指定,因此原始进程和派生进程都将获得args:

mvn release:prepare -DsomeArg=val -Darguments="-DsomeArg=val" ...

release plugin FAQ中的第一个示例显示了后者有用的示例。

----更新----

我在maven-scm-plugin code中找到了该物业。

SCM ValidateMojo.scmDeveloperConnection

也许project.scm.developerConnection是只读的?尝试设置scmDeveloperConnection,因为它被列为属性名称。

答案 1 :(得分:0)

看来您不能直接从命令行传递此属性。参见:

https://issues.apache.org/jira/browse/MRELEASE-707

但是您应该通过在pom.xml中的自定义属性中指定它来使其工作:

<properties>
    <my.developer.connection />
</properties>

<scm>
    <developerConnection>${my.developer.connection}</developerConnection>
    <tag>HEAD</tag>
</scm>

例如,运行Maven:

-Dmy.developer.connection=scm:git:ssh://user@host/repo.git

在生成不应包含有关公司内部信息的公共发行版时,我使用这种方法来保持pom.xml的干净。