我有一个 Maven 项目,我正在尝试将其配置为使用 Maven 发布插件。发布过程的一部分是使用 Maven GPG 插件对工件进行签名,这需要 GPG 签名密钥密码短语才能成功。因为这些构建需要在非交互式环境中运行,(CI-Server)这些参数作为参数传递给 maven,形式为
-Dgpg.passphrase=XXX
对于快照构建,一切正常;Maven GPG 插件会看到传入的密码短语,按预期构建、签名和部署工件,但是,当我尝试使用发布插件时,系统会提示我输入 gpg 签名密钥密码。我已经阅读了几个关于类似问题的讨论,这些问题源于发布插件分叉另一个不接收传入参数的 maven 调用。最流行的修复似乎是像这样使用“arguments”参数:
-Darguments="-Dgpg.passphrase=XXX"
据说这会传递给分叉的实例,但不幸的是对我来说它并没有摆脱提示。
由于对工件进行签名并不是将发布工件部署到公共 maven 存储库的常见先决条件,并且可能大多数生产这些工件的实体都使用某种形式的 CI,我无法想象我是唯一遇到此问题的人。有没有人找到解决方法?
关于已接受答案的说明:
接受的解决方案将无法与 Maven 3.0 - 3.0.3 和 3.0.3 一起使用,这恰好是在 OSX Mountain Lion 上默认安装的 java。您需要升级到 3.0.4。