为什么看这篇
一是当前网络上一些博客有遗漏部分,这里做补充,二是网上思路没错,但是有些关键配置maven官方做了变更,其三:更详细,更面向初次使用的developer
整体流程
上图所示的步骤基本就是本文的框架,其实打包逻辑比较清晰,仅仅是过程复杂,但有过公司开发经历的同学应该能get到这其实和配置公司的私服步骤基本差不多,
需要注意一点是Apache Maven并没有直接为我们提供打包发布的服务,而是委托给Sonatype公司这个第三方来承接开发者的打包需求。如下便是怎么去使用Sonatype来构建我们的jar包
, 更多细节文末有提及
1. 注册账号【首次需要】
- 注册地址
- 这里需要记住用户名和密码,下面配置server的时候需要用到
- 第一次使用的同学需要这个步骤,后续的直接走第二步
2. 工单申请【新项目必须】
- 工单地址
- 创建一个发布工单,声明要进行打包流程
- 按顺序做如下配置【只考虑必填项】
- 项目选择:Community Support - Open Source Project Repository Hosting【直接复制到选择框】
- 问题类型:New Project
- 概要: 简单描述
- 核心配置:
-
group id
: 初学者先拿github的域名即可【注意最新格式必须是这样】:io.github.xxx
前缀是固定,xxx可以自定义,但推荐使用github的用户名;当然实际项目中的goupId和这里也没啥关系,也可以自定义,但是最好统一,因为对外给使用看到的就是io.github.xxx
-
Project URL
: github 的项目地址 -
SCM URL
: 带.git后缀的 github 的项目地址
-
3. 项目配置【新项目必须】
具体配置内容是:
- mave打包插件
- javadoc、源代码打包插件
- GPG打包插件
基本按如下复制到你要打包的模块的pom中即可【这个配置可以避免你后期打包遇到一系列问题】
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>
<!--禁用注释检查-->
<additionalJOptions>
<additionalJOption>-Xdoclint:none</additionalJOption>
</additionalJOptions>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
4. 授权认证【新项目必须】
这里要用到一个技术:GPG认证,是一种RSA算法实现,目的就是为了校验你是owner,这个项目只有你才能有资格进行代码的打包发布
下载地址
下载完成并且安装成功后,做如下配置
- 本地生成RSA秘钥对,基本安装提示一路提示走下去即可
gpg --gen-key
- 将公钥发布给GPG认证机构,这里罗列三个,任意一个发送成功就行
gpg --keyserver hkp://keyserver.ubuntu.com --send-keys 【如图pub中的公钥串:58F51E8349B06CFF6373189B816EDACFF7BF5299】
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys [同上]
gpg --keyserver hkp://keys.openpgp.org --send-keys 【同上】
- 去本地maven的安装目录,找到settings配置文件,配置用户名和密码【第一步创建】
<!--jira for maven sonatype-->
<server>
<id>ossrh</id>
<username>your username</username>
<password>your password</password>
</server>
只配置这个足够,有的人推荐配置profile搞成默认使用Sonatype发布,其实看个人,因为我也使用公司的私服,所以并没有配置,如果纯个人项目可以参考如下非必须配置
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.executable>gpg2</gpg.executable>
<gpg.passphrase>yzdbwj1993</gpg.passphrase>
</properties>
</profile>
</profiles>
5. 一键发布
注意这里有个前提:就是的带打包模块一定是测试验证,编译没问题的
看你习惯用那种方式,命令行 mvn clean install deploy 还是 通过maven工具直接deploy,即可看到效果:
发布成功后可以 访问:https://s01.oss.sonatype.org/#nexus-search;quick~kg-ctl 查看你的jar
最后也很重要
其实写了这么多打包流程,其实想向大家推荐一款基于完全自创的工具jar:分布式任务故障重试脚手架
这里面包含了我工作两年从事数据同步开发,技术组件研发的思想结晶而成,更重要的是能够去解决一些我们频繁的服务发布或者服务故障导致定时任务不得已重试的场景,具体功能可以前往查看,当前已经构建1.0版本,还在持续迭代
第一次使用也有不少踩坑,欢迎各位童鞋使用,哦对了,最后建议及时关闭你的Sonatype issue形成闭环