文章目录
- 背景
- 1. 创建项目
- 2. 注册JIRA账号
- 3. 创建issues注册groupId
- 4. 配置maven setting.xml
- 5. 项目打包配置
- 6. 安装并配置GPG
- 7. 项目打包上传
- 搜索我们的jar
背景
最近想做个开源项目练练手,然后在github各种操作都准备好了,想给人用发现需要将项目打成Jar发布到中央仓库别人才能引用,故此学习了一下如何将Maven项目发布到中央仓库。首先给小伙伴们看看的开源项目地址吧
gtihub 期间也踩了不少坑,为了让小伙伴们避免踩坑,就写了这篇文章记录下
1. 创建项目
项目创建这个没什么好说的,都想要看这篇文章了,肯定是有了项目想要发版。我这里给大家看看我的项目结构吧
大致就长这样,其中的groupId我故意用红圈圈出来是重点,因为我们发布到中央仓库需要有个组织,也可以理解为域名之类的。如果你没有域名就只能使用免费的githu的这个域名,github的固定前缀是io.githu.
所以其实我们看一些开源jar为什么groupId是这个前缀就能理解了
2. 注册JIRA账号
JIRA是一个项目管理服务,类似于国内的Teambition。Sonatype通过JIRA来管理OSSRH仓库。
记住我们的Username
和Password
后面的步骤需要用到
3. 创建issues注册groupId
主要是几个必填的填写就行了。然后提交,等待人工处理
可以看到我比较蠢,开始随便用的groupId,然后人家要我验证我没有,还好心告诉我我可以使用io.github.weihubeats
这个groupd,并且我需要在我的github建立一个临时的仓库,仓库名为OSSRH-74839
来证明这个github是我自己的以上步骤都做完后人工就会回复我们可以上次jar了并会关掉这个issues
4. 配置maven setting.xml
<servers>
<server>
<id>sonatype</id>
<username>name</username>
<password>password</password>
</server>
上面的username和password就是你jira的账号密码,这个id随便配吧,但是后面要与项目中的配置一致,所以这里可以不用改
5. 项目打包配置
在pom添加如下配置
- 开源协议
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
- 作者信息
<developers>
<developer>
<name>weihubeats</name>
<email>weihubeats@163.com</email>
<organization>https://weihubeats.blog.csdn.net/</organization>
</developer>
</developers>
- 项目信息
<scm>
<connection>scm:git@github.com:weihubeats/wh-mq-Idempotent.git</connection>
<developerConnection>scm:git@github.com:weihubeats/wh-mq-Idempotent.git</developerConnection>
<url>git@github.com:weihubeats/wh-mq-Idempotent.git</url>
</scm>
- snapshotRepository地址
<distributionManagement>
<snapshotRepository>
<id>sonatype</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>sonatype</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
- 打包插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<encoding>UTF-8</encoding>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<!-- Javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
<additionalJOptions>
<additionalJOption>-Xdoclint:none</additionalJOption>
</additionalJOptions>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Gpg Signature -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
大致就这些内容,可以参考我前面给出的项目地址去参考我的pom文件
6. 安装并配置GPG
发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性。因此,我们需要在本地安装并配置GPG。
MacBook安装GPG非常简单,下载并安装GPG Suite即可。
然后配置账号密码
记住这里的用户密码,后面要输入的。然后上传公钥
也可以使用命令行方式(上面图形化界面操作了就不用下面命令行方式操作了)
- 生成秘钥
gpg --gen-key
- 查看公钥
gpg --list-keys
- 发布公钥
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys C4B28DD284B45F052071359920A32885F49417BF
- 验证是否发布成功
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys C4B28DD284B45F052071359920A32885F49417BF
7. 项目打包上传
需要注意的是项目打包上传的版本号不能带有-SNAPSHOT
由于我是多模块项目,我只需要打包两个模块所以使用如下命令
mvn clean deploy -projects wh-core,wh-rocketmq
这里需要注意我这里的是多模块maven,实际这样打包是上传上去是下载不了的,因为无法依赖到父pom。我们打包需要直接在父pom执行
deploy
对于不需要打包的模块添加如下属性
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
打包成功后我们到sonatype查看我们发布的jar,登入使用jira的账号密码即可登入
然后在staging Repositories
这里可以看到我们发布的jar
这里我们还需要把这个jar真正的发布,我们勾选这个jar,然后点击上方的close
close如果没啥问题,此时的close
就会被置灰,不让点了。然后我们点击Release
即可发布
过一会我们注册jira的邮箱就会提示我们发布成功了
搜索我们的jar
需要注意的是我们只是在
https://repo1.maven.org/maven2/ 中可以搜索到,同步到中央仓库搜索可能要4个小时左右
我们去 https://repo1.maven.org/maven2/ 看看我们的jar是否发布成功
可以看到已经发布成功了,然后等几个小时再去中央仓库搜索一下吧
中央仓库地址:
https://search.maven.org/