0%

在Maven中央仓库留个印记

亚马逊的MWS Java API发布了N久,却始终不入驻Maven中央仓库,SellerCentral论坛上民怨时有起伏,官府却始终不动如山。那么,就WHY ALWAYS ME吧😅顺便小记到此一游的关键点,权作备忘。当然,如果只想内部使用,那么还是上马Nexus吧。

让中央批准

  • 创建JIRA账号
  • 开Issue,咱们抱GitHub的大腿,所以请中央批准我们个体户com.github.ny83427就好。Issue咋写?可参考我提交的Issue 55953。SonaType的响应速度比网传、预期快很多。为验明正身,SonaType会要求你创建一个与Issue编号同名的的GitHub Public Repository,比如这个。照办之后SonaType会很快审批通过,效率杠杠!

Maven相关配置

以终为始,不妨先直接看一个通过的案例

详情可以参考官方攻略,大体来说:在项目POM中配置发布目的地,在~/.m2/settings.xml中输入此前注册的JIRA账号信息,再配置所需的构建插件即可。

毕竟是中央仓库,对项目形象有一些基本要求,歪瓜裂枣上不了台面。至少得声明:License、开发者信息、版本管理地址。必须附上源码、JavaDoc。所以少不了maven-source-pluginmaven-javadoc-plugin,JDK8开始对JavaDoc的检查严格了不少,disable-java8-doclint糊弄过去,也就好了。

相对麻烦的是GPG设置,中央的精神是推到仓库的所有文件都得签名。官方攻略并不完全奏效,如果你像老杨一样在Windows 10下面折腾,那么需要注意的两点是:

  • 安装Simple installer for GnuPG 1.4,官方攻略比较凌乱,但凡使用gpg2的地方,实际得用gpg

  • 发布公钥这一步,按网传的,同时推到Ubuntu之后才好使:

    1
    2
    gpg --keyserver hkp://pool.sks-keyservers.net --send-keys ${your.public.key}
    gpg --keyserver keyserver.ubuntu.com --send-keys ${your.public.key}

    验证,随便找个GCE或AWS的Ubuntu Server确认一下,当然,WSL也OK:

    1
    2
    gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys ${your.public.key}
    gpg --keyserver keyserver.ubuntu.com --recv-keys ${your.public.key}

发布、等待

1
mvn clean deploy

发布,然后等待。Repositories中会很快看到,但是要在Maven中央仓库中出现,得耐心等等。一觉醒来,大概会好吧。

其他

mws-java-client仅仅只是把亚马逊提供的老式压缩包文件以方便Maven的方式做了重组,所有代码版权均属亚马逊,老杨无份无关。其中部分依赖库的版本有微调,GitHub Bot检测到http-client-4.2.6有已知安全问题并自动提了PR,老杨自是从善如流,升为4.3.6。其他依赖,均尽可能按照压缩包中给出的版本信息设置。测试下来的结果,一切都还好。

好了,那么现在要使用MWS Service,这样就好:

1
2
3
4
5
<dependency>
<groupId>com.github.ny83427</groupId>
<artifactId>mws-java-client</artifactId>
<version>1.0</version>
</dependency>

或是这样:

1
compile group: 'com.github.ny83427', name: 'mws-java-client', version: '1.0'

MWS还有其他一大票诸如OrdersProducts等等API,这些已经有其他票友推到中央仓库,老杨我就不重复折腾了。