Maven:如何从发布中传递命令行参数:执行部署?

时间:2013-03-03 19:03:07

标签: maven maven-release-plugin

当我在我的项目上调用release:peform时。它调用deploy,然后调用gpg。我想使用系统属性或环境变量将gpg密码传递给流程,但似乎都不起作用。

如果我调用mvn.bat '-Darguments="-Dgpg_passphrase=test"' -Pwindows-i386-msvc-debug -DconnectionUrl=scm:hg:https://boost-maven-project.googlecode.com/hg/ release:perform,Maven最终会调用:

cmd.exe /X /C mvn deploy --no-plugin-updates -Psonatype-oss-release -P windows-i386-msvc-debug,always-active -f pom.xml"

正如您所看到的,环境变量和-Darguments命令行参数都不会传递给deploy目标。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您已配置为-Denv.gpg_passphrase=test,如果我错了,请纠正我。我知道您正在尝试传递此处不允许的环境变量。它是一个名为env.gpg_passphrase的系统属性。 -D始终是系统属性。

如果您想使用环境变量,请通过操作系统配置进行配置。如果您想使用系统属性,请使用-D。请不要混用这两种类型。

恕我直言,我有一个场景,因为你提到要签署这件神器。我通过在构建部分明确指定“maven-release-plugin”进行配置,如下例所示。

<build>
    <plugins>
        <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>${my.maven.release.version}</version>
            <configuration>
                <arguments>${my.release.arguments}</arguments>
            </configuration>
        </plugin>
    <plugins>
</build>

出于安全目的,我还在每个开发人员 settings.xml 中配置名为 my.release.arguments 的属性(不要共享密码,例如user / password / private键等)。我想通过查看签名来了解并确定谁发布了这些工件。

我希望这可能有所帮助。

此致

Charlee Ch。

答案 1 :(得分:0)

事实证明这是由Sonatype错误造成的:https://issues.sonatype.org/browse/CENTRALSRV-35