在java开发中,为了避免重复造轮子,我们可以复用别人开发的软件为我所用,直接用maven引入依赖即可,有非常牛逼的比如springboot、netty、mybatis等等,作为一个Java程序员怎么能没有自己的软件发布到maven仓库呢,接下来我手把手教大家如何发布自己项目为大家所用。
教程里面使用的是我开发的qRPC框架,感兴趣的同学建议点赞+收藏+关注,代码仓地址:qRPC
准备工作
- 到sonatype注册一个账号,https://issues.sonatype.org/secure/Signup!default.jspa
- 注册完成之后创建问题单
项目选择:Community Support - Open Source Project Repository Hosting (OSSRH)
问题类型选择:New Project
- 填写必要的信息
创建issue的时候需要填写下面这些信息:
- Description 项目描述
- Group Id 组织名,个人项目貌似只支持io.github.用户名的形式,比如我发布的io.github.barackyoung
- Project URL 在代码管理平台项目的地址
- SCM url 项目的git地址
- 完成之后会有邮件提醒你,然后你点response,找不到的话好像不点也行,我就找不到这个按钮。
5. 点进你刚刚创建的问题,底部会有活动信息,会要求你做一个验证,验证你的代码仓,你需要在你的github上创建一个与问题单同名的问题单,然后点验证。
像我就创建了一个OSSRH-93312的代码仓,这一步貌似也不是必须的。
到此为止,准备工作完成。
安装PGP,创建密钥并向公共服务上传公钥
我是在linux下面操作的,安装PGP后3行命令解决(安装PGP一行命令,若没有安装运行时会提醒你怎么安装)
- gpg --gen-key
- gpg --list-keys
- gpg --keyserver keyserver.ubuntu.com --send-keys 秘钥ID,密钥ID就是第二步中的pub部分,6730…那一串
配置maven
- 如果你还未安装maven,先下载安装maven,配置好环境变量,打开settings.xml文件(一般在你的maven home下的conf目录下),打开后在中加入以下内容:
<server>
<id>oss</id>
<username>sonatype用户名</username>
<password>sonatype密码</password>
</server>
这里的账户名和密码就是之前注册的账号密码。
- 配置项目的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>
<comments>A business-friendly OSS license</comments>
</license>
</licenses>
<scm>
<tag>main</tag>
<url>https://github.com/BarackYoung/qRPC.git</url>
<connection>scm:https://github.com/BarackYoung/qRPC.git</connection>
<developerConnection>scm:git:git@github.com:BarackYoung/qRPC.git</developerConnection>
</scm>
<developers>
<developer>
<name>Lianhuan Yang</name>
<email>1330292703@qq.com</email>
<url>https://github.com/BarackYoung/</url>
</developer>
</developers>
<distributionManagement>
<snapshotRepository>
<id>oss</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>oss</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<!-- Source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Javadoc工具 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<configuration>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- GPG -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
scm和developers替换成你自己的,其他部分复制粘贴就行。
上传到sonatype
以上准备工作都准备完毕了,接下来就是上传,非常简单,在项目目录下执行以下命令即可。
mvn clean deploy
执行过程中会让你输入一个密码,随便输入一个即可。最后会看到build success,上传到sonatype成功。
上传到maven仓库
打开https://s01.oss.sonatype.org/#welcome ,用之前注册的账号登陆
- 点击[staging repostory]刷新后就能看到刚刚上传的组件。
- 点击close,描述随便输入,开始检验,下面activity可以查看校验进度
- 校验完成之后点release,等待几小时后就同步到中央仓库了。
避坑
- 上传snapshot版本时刚刚打开的地址找不到上传的项目,pom里面的版本要把snapshot删掉。
- maven要使用jdk而不是jre,最好是下载jdk然后配置环境变量,lunix上不要直接apt install java命令。