亚马逊的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-plugin
和maven-javadoc-plugin
,JDK8开始对JavaDoc的检查严格了不少,disable-java8-doclint
糊弄过去,也就好了。
相对麻烦的是GPG设置,中央的精神是推到仓库的所有文件都得签名。官方攻略并不完全奏效,如果你像老杨一样在Windows 10下面折腾,那么需要注意的两点是:
安装Simple installer for GnuPG 1.4,官方攻略比较凌乱,但凡使用gpg2的地方,实际得用gpg
发布公钥这一步,按网传的,同时推到Ubuntu之后才好使:
1
2gpg --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
2gpg --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 | <dependency> |
或是这样:
1 | compile group: 'com.github.ny83427', name: 'mws-java-client', version: '1.0' |
MWS还有其他一大票诸如Orders
、Products
等等API,这些已经有其他票友推到中央仓库,老杨我就不重复折腾了。