去年在公司做工作流相关业务时,当时使用flowable做引擎,中途涉及到一些业务上的需求,自己整理了一些代码,考虑到开源精神,当时就想着将于公司业务无关的代码抽离出来,放到Maven中央仓库中,以供别人学习借鉴,跟着各路大神的帖子折腾了不少时间,一路曲折最终发布到仓库中,地址在此 https://mvnrepository.com/artifact/com.github.songyz0310/flowable-lang 需要的可以使用,我会不定期更新。回到本帖主题,本篇不涉及此工具包,主要说下关于Maven发布的步骤和心得。最近心血来潮,希望把这几年的java相关的东西整理下,暂定项目集 java-toolkits 。

第一步,注册GitHub的账户

地址:https://github.com

关于GitHub,无需我多说,Java语言本身就是开源的,作为Javaer又怎么离得开GitHub,注册没什么需要提的,这是我个人的GitHub地址,欢迎评价点星!

第二步,注册Sonatype的账户

地址:https://issues.sonatype.org/secure/Signup!default.jspa

【友情提示】这里的密码校验真的是很太苛刻了,基本上是我见过的最严格的的。注册过后一定要记在小本本上,否则,我敢说大部分人一小时之后就记不得了,

第三步,在Sonatype上提交关于本项目的发布申请

点击页面上方 Create 按钮即可创建此项目的 Issue。

1 Project: Community Support - Open Source Project Repository Hosting (OSSRH)
2 Issue TypeRequired: New Project
3
4 Summary: java-toolkits (自己项目名称)
5 Group Id:com.github.songyz0310 (maven项目坐标 Group Id)
6 Project URL:https://github.com/songyz0310/java-toolkits (项目地址)
7 SCM url:https://github.com/songyz0310/java-toolkits.git (源代码地址)

其他内容可以按照自己实际情况填写,可以用默认值的地方,可以不用填写。

当你提交后状态为等待工作人员审核,审核通过后状态会修改为 RESOLVED

关于此步骤审核我有个小疑问,我2018年发布flowable-lang项目时,跟2019年发布java-toolkits项目要求有些稍微的不同,后边这一次多了对于权限的校验,不过在工作人员的详细回复下,问题不大。毫无疑问,这次比上次校验的更严格了。当你看到最后这一条评论时,就证明你可以开始下一步了。

第四步,配置Maven

4.1,配置 settings.xml 文件

在servers节点内部添加如下server配置,这里就会用到第二步的注册信息(~偷笑~)

 1 <server>
 2   <id>sonatype-nexus-snapshots</id>
 3   <username>Sonatype账号</username>
 4   <password>Sonatype密码</password>
 5 </server>
 6 <server>
 7   <id>sonatype-nexus-staging</id>
 8   <username>Sonatype账号</username>
 9   <password>Sonatype密码</password>
10 </server>

4.2,配置项目 pom.xml 文件

增加开源许可协议,SCM信息,开发者信息等待根据自己信息填写即可

 1 <licenses>
 2     <license>
 3         <name>The Apache Software License, Version 2.0</name>
 4         <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
 5     </license>
 6 </licenses>
 7 <scm>
 8     <connection>scm:git:https://github.com/songyz0310/java-toolkits.git</connection>
 9     <developerConnection>scm:git:https://github.com/songyz0310/java-toolkits.git</developerConnection>
10     <url>git:https://github.com/songyz0310/java-toolkits.git</url>
11 </scm>
12 <developers>
13     <developer>
14         <name>songyz</name>
15         <email>songyinzeng@gmail.com</email>
16         <organization>i1stcs</organization>
17     </developer>
18 </developers>

如果发布Release版本,需要添加Release的相关profile配置,distributionManagement节和maven-compiler-plugin节的配置信息根据自己的实际情况做修改。

 1 <profile>
 2     <id>release</id>
 3     <build>
 4         <resources>
 5             <resource>
 6                 <directory>src/main/java</directory>
 7                 <includes>
 8                     <include>**/*.properties</include>
 9                 </includes>
10             </resource>
11         </resources>
12         <plugins>
13             <!-- Source -->
14             <plugin>
15                 <groupId>org.apache.maven.plugins</groupId>
16                 <artifactId>maven-source-plugin</artifactId>
17                 <version>2.2.1</version>
18                 <executions>
19                     <execution>
20                         <phase>package</phase>
21                         <goals>
22                             <goal>jar-no-fork</goal>
23                         </goals>
24                     </execution>
25                 </executions>
26             </plugin>
27             <!-- Javadoc -->
28             <plugin>
29                 <groupId>org.apache.maven.plugins</groupId>
30                 <artifactId>maven-javadoc-plugin</artifactId>
31                 <version>2.9.1</version>
32                 <configuration>
33                     <show>private</show>
34                     <nohelp>true</nohelp>
35                     <charset>UTF-8</charset>
36                     <encoding>UTF-8</encoding>
37                     <docencoding>UTF-8</docencoding>
38                     <additionalparam>-Xdoclint:none</additionalparam>
39                     <!-- TODO 临时解决不规范的javadoc生成报错,后面要规范化后把这行去掉 -->
40                 </configuration>
41                 <executions>
42                     <execution>
43                         <phase>package</phase>
44                         <goals>
45                             <goal>jar</goal>
46                         </goals>
47                     </execution>
48                 </executions>
49             </plugin>
50             <!-- GPG -->
51             <plugin>
52                 <groupId>org.apache.maven.plugins</groupId>
53                 <artifactId>maven-gpg-plugin</artifactId>
54                 <version>1.5</version>
55                 <executions>
56                     <execution>
57                         <phase>verify</phase>
58                         <goals>
59                             <goal>sign</goal>
60                         </goals>
61                     </execution>
62                 </executions>
63             </plugin>
64             <!--Compiler -->
65             <plugin>
66                 <groupId>org.apache.maven.plugins</groupId>
67                 <artifactId>maven-compiler-plugin</artifactId>
68                 <version>3.0</version>
69                 <configuration>
70                     <source>1.8</source>
71                     <target>1.8</target>
72                     <fork>true</fork>
73                     <verbose>true</verbose>
74                     <encoding>UTF-8</encoding>
75                     <showWarnings>false</showWarnings>
76                 </configuration>
77             </plugin>
78             <!--Release -->
79             <plugin>
80                 <groupId>org.apache.maven.plugins</groupId>
81                 <artifactId>maven-release-plugin</artifactId>
82                 <version>2.5.1</version>
83             </plugin>
84         </plugins>
85     </build>
86     <distributionManagement>
87         <snapshotRepository>
88             <id>sonatype-nexus-snapshots</id>
89             <name>Sonatype Nexus Snapshots</name>
90             <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
91         </snapshotRepository>
92         <repository>
93             <id>sonatype-nexus-staging</id>
94             <name>Nexus Release Repository</name>
95             <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
96         </repository>
97     </distributionManagement>
98 </profile>

第五步,配置PGP的公钥信息

由于我使用的是Windows,Mac和Linux用户请自行查找本步骤解决方案

Windows下使用gpg4win来进行配置。下载地址 https://www.gpg4win.org/get-gpg4win.html
安装好之后,打开cmd控制台,使用 gpg --list-keys 命令来查询自己配置的key
如果提示gpg不是可执行程序或命令,请配置Path路径到 GnuPG 的bin目录

生成密钥的命令 gpg --gen-key,过程中需要使用到姓名、邮箱等信息,这里的配置最好和Sonatype注册信息、pom文件配置信息保持一致,以免不必要的麻烦。
生成的过程中,会有个弹框要求输入Passphase信息,这个是密钥的密码,同样需要记牢。发布签名的过程中会用得到。

使用 gpg --list-keys 命令查询配置好的公私钥信息,使用 gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys <公钥key> 将公钥信息发送到ubuntu.com服务器,后续推送maven仓库会做校验。

第六步,打包Deploy

使用 mvn clean deploy -P <profile-id> 命令,一键打包。
打包过程中会要求输入gpg密钥的Passphase信息,输入即可。

【友情提示】如果打包过程中出现了401类的错误,可能是因为Maven的配置文件中Server节点配置的用户名和密码不正确,或者 Issue 还未审核通过。

第七步,发布Release

进入 https://oss.sonatype.org/#stagingRepositories 查看发布好的构件,点击左侧的Staging Repositories,可以使用Group Id或其他信息搜索自己的项目,

此时的构件状态为 Open,选中构件,并点击上方的 Close–>Confirm 在下边的Activity选项卡中查看状态。

当状态变成closed后,执行 Release–>Confirm 并在下边的Activity选项卡中查看状态。
成功后构件自动删除,一小段时间(约1-2个小时)后即可同步到maven的中央仓库。届时会有邮件通知。


至此,发布到Maven中央仓库完成。

第八步,收尾工作

对自己提交的Issue增加Comment,留言致谢并表示发布已经完成,请工作人员关闭Issue

有始有终吧。☺☺☺收工~~~

转载于:https://www.cnblogs.com/songyz/p/11387978.html

如何将自己的代码发布到Maven中央仓库?相关推荐

  1. 如何将JAR包发布到Maven中央仓库?

    将jar包发布到Maven中央仓库(Maven Central Repository),这样所有的Java开发者都可以使用Maven直接导入依赖,例如fundebug-java: <!-- ht ...

  2. 将maven项目打包并发布到maven中央仓库

    为什么要把我们的项目打包发布到maven中央仓库? 开源,为了将我们的项目(作为开源组件)开源出去,让全世界的开发者都可以使用maven将我们的组件引入到他们自己的项目中使用. 项目打包发布到mave ...

  3. 如何将自己开源的项目发布到maven中央仓库

    关注"Java艺术"一起来充电吧! 如何将开源项目发布到maven中央仓库,让别人通过依赖使用你的开源项目,想必很多朋友都有过这个想法. 去年我就想将自己开源的一个miniexce ...

  4. 喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库

    相信通过java和SQLServer开发应用的同学们都经历过如下类似的问题. 微软提供的JDBC官方驱动没有放置在Maven仓库中,这样如果你的Java应用需要访问SQL Server,你不得不下载s ...

  5. 如何把JAR发布到maven中央仓库

    详细描述maven中央仓库发布jar包的中间过程, 以及遇到的一些问题汇总, 尽量用文字描述清楚, 耐心看下去, 就一定会发布成功 ----Sonatype篇---- 名词解释: Sonatype N ...

  6. idea maven打jar包_Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库

    摘要 Maven 中央仓库并不支持直接上传 jar 包,因此需要将 jar 包发布到一些指定的第三方 Maven 仓库,比如:Sonatype OSSRH 仓库,然后该仓库再将 jar 包同步到 Ma ...

  7. 将 Smart 构件发布到 Maven 中央仓库

    https://my.oschina.net/huangyong/blog/226738 转载于:https://www.cnblogs.com/longshiyVip/p/6857718.html

  8. 发布/上传Jar包到Maven中央仓库 - 史上最详细

    发布 Jar 包到 Maven 中央仓库 在项目开发过程中,我们常常会使用 Maven / Gradle 从仓库拉取开源的第三方 jar 包,可能是私有仓库,可能是 Maven 中央仓库,也可能是第三 ...

  9. 如何发布自己的项目到Maven中央仓库?

    在Maven项目中,90%以上的jar包是通过pom文件直接从开源仓库中获取依赖jar包文件,然后在项目中进行集成使用. 此时如果你有一个开源项目,那么如何将该开源项目发布到Maven中央仓库,让其他 ...

最新文章

  1. c语言怎么判断是不是标识符,C语言判断输入是否为C语言标识符(示例代码)
  2. 两种获取Stream流的方式
  3. jquery入门与实践案例教程
  4. oracle 库存管理系统,库存管理系统
  5. vue element ui下拉菜单和不是table列表全选功能问题解决方案
  6. vue爬坑之路2----vue实例
  7. 智慧城市综合管控平台
  8. Session生命周期
  9. 小象学院python数据分析课程怎么样_小象学院大数据分析集训营试听知识点整理-正则表达式...
  10. Word 标题样式不统一:有的没有段前,标题前后不一致
  11. 15版计算机应用基础知识整理,[电脑基础知识]计算机应用基础.ppt
  12. L298N驱动直流电机转动
  13. java消息队列-kafka
  14. LOG_PATH_IS_UNDEFINED 解决
  15. 十进制数与8421码、5421码、2421码以及余3码之间的部分转换
  16. 绿色信贷数据合集(更新至2021年)
  17. 笑傲江湖手3D有服务器端文件,笑傲江湖网游单机版
  18. 【干货】ArcGIS常用标注技巧
  19. SE5004L-R功率探测器SKYWORKS 封装QFN
  20. MTCNN——多目标检测人脸实现流程

热门文章

  1. java excel导入前台_java后台生成了一个表格,用流传到前台,请问怎么接收呀?在线等...
  2. CSS浏览器兼容性的4个解决方案:浏览器CSS样式初始化、浏览器私有属性,CSS hack语法和自动化插件...
  3. Windows系统下查看已共享的文件夹的方法
  4. 面向对象程序设计(OOP设计模式)-行为型模式之观察者模式的应用与实现
  5. ssh scp不用输入密码
  6. Domino Web开发规则之一:Notes命名规范
  7. MVP Open Day小记
  8. 深入一步研究DNS服务器
  9. LeetCode 5366. 检查网格中是否存在有效路径
  10. LeetCode 945. 使数组唯一的最小增量