发布Maven构件到中央仓库
自己写一个开源的maven插件爽吧,发布出去怎么样,大体流程网上的攻略都差不多
可以参考这份 发布Maven构件到中央仓库
下面重点说说遇到的坑
第1个坎 GPG安装
Win10系统下安装攻略中提到的官方gpg4win会失败,下载无法安装被杀毒软件拦截了,具体原因不明,网上找了一个for windows store的WINGPG1.0, 终于安装成功
第2个坎 no tty
无法输出到tty,解决这个并不难,maven配置中加入参数即可,不清楚为什么攻略中其他人没碰到
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<gpgArguments>
<gpgArgument>--no-tty</gpgArgument>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
第3个坎 no agent
这货足足困惑了我好久,直到发现这是一个exe文件,而我下载的WINGPG1.0里根本没有这个文件。于是继续谷歌之,查到有这么个工具 gnupg https://www.gnupg.org/ 也可以做打包工作. 下载安装,在其根路径下看到了这个gpg-agent.exe,把path默认设置的pub路径改为根路径即可访问。
回溯问题时想不起什么问题导致要改gpg.exe执行文件要改为gpg2.exe了,不改应该也是可行的,如果要用gpg2.exe可以在maven中加入如下内容
<profile>
<id>release</id>
<properties>
<gpg.executable>gpg2</gpg.executable>
</properties>
...
第4个坎 no default secert key
回溯这个问题时推测本地产生这个问题的原因是从WINGPG换成gnupg造成的,前期在WINGPG下产生的key有信息丢失了,在调试的过程中gnupg下生成key以后,丢失了secert key。总之如果生成key以后 gpg2 –list-secret-keys 查看不到(注意如果参照攻略就统一用gpg,按我的设置就统一用gpg2),那么就需要再生成一个key.
第5个坎 私钥上传?
这个问题我也不很确定,既然本地需要有一个secret-key才能签名,https://oss.sonatype.org/ 上操作close这个步骤的时候为啥还需要在公共key pool里找这个key. 反正是开源的,我就把这个私钥也上传了,事实上这个后创建的私钥在gpg2 –list-secret-keys和gpg2 –list-keys中同时存在。具体逻辑就不管了,老子是来上传开源插件的。