2013-03-03 45 views
0

当我在我的项目上调用release:peform时。它会调用deploy,然后调用gpg。我想使用系统属性或环境变量将gpg密码传递到进程中,但似乎都不起作用。Maven:如何从发布版传递命令行参数:执行部署?

如果我调用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目标。有任何想法吗?

回答

0

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

如果您想使用环境变量,请改为通过OS配置进行配置。如果您想使用系统属性,请使用-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属性(不共享的秘密,例如用户名/密码/私钥等)。我能够通过查看签名来了解并识别谁发布了这些工件。

我希望这可能有所帮助。

Regards,

Charlee Ch。

相关问题