将本地jar发布到远程maven仓库【详细】

前情提示

mac big sur;
idea version 2020.1+
maven3.6;
gpg suite;
文中module代码为示例demo,自己也可以随便找个,进行测试;
文末有配置文件;
启用最新地址:s01.oss.sonatype.org
已安装idea:
已安装maven:

图片不显示,直接右键转到该地址,或者访问https://www.pusdn.com

一说

  • 同步更新最新版、完整版请移步PUSDN Powered By PUSDN - 平行宇宙软件开发者网www.pusdn.com ,转载请标明出处!

  • 部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤

  • 带有#号、删除线、不操作、不执行字样的为提示或者备份bash,实际不执行

一句话

建jira账号 - 建GPG账号 - 复制pom.xml文末有 - 点击deploy

注册账号

https://issues.sonatype.org/secure/Dashboard.jspa
![image.png](https://img-blog.csdnimg.cn/img_convert/17e49665f9ed31d2ce2e99c2f7bd15b0.png#clientId=uc9fe539a-1065-4&from=paste&height=497&id=ub4965a70&margin=[object Object]&name=image.png&originHeight=994&originWidth=2586&originalType=binary&ratio=1&size=223179&status=done&style=none&taskId=u88872aca-0fda-4e9b-be72-d8a36d43ac0&width=1293)
根据提示,选择中文,如下图:
![image.png](https://img-blog.csdnimg.cn/img_convert/0bc08db0c0876d2a07ea5359a7a09ee8.png#clientId=uc9fe539a-1065-4&from=paste&height=221&id=uf3530cc6&margin=[object Object]&name=image.png&originHeight=442&originWidth=920&originalType=binary&ratio=1&size=76032&status=done&style=none&taskId=u87911b8f-6f0b-49ef-b4e5-e26bc46f05b&width=460)

创建issue

点击右上角create,按照提示填写。
或者登录状态下点击:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
![image.png](https://img-blog.csdnimg.cn/img_convert/4edff88148e81102da773f5f9b3ac2e8.png#clientId=uc9fe539a-1065-4&from=paste&height=668&id=ue0425c03&margin=[object Object]&name=image.png&originHeight=1336&originWidth=2590&originalType=binary&ratio=1&size=299602&status=done&style=none&taskId=udf1344f0-ffbe-4b30-9756-cdd5bbc6a52&width=1295)
![image.png](https://img-blog.csdnimg.cn/img_convert/adcb2c1df110369a98be401975cce5da.png#clientId=uc9fe539a-1065-4&from=paste&height=703&id=u4eb8b5db&margin=[object Object]&name=image.png&originHeight=1406&originWidth=2560&originalType=binary&ratio=1&size=410131&status=done&style=none&taskId=u3c17e35d-6495-402a-84a4-ff5545a2538&width=1280)
摘要summary:随意填写,或者复制以下内容

Upload jar packages to maven central repository

描述description:

我需要将jar上传到maven中央存储库,然后通过maven远程下载依赖项提供Java项目来运行项目,因此我想创建一个新项目来保存jar。
另外,我想问下,如果我不想提供源代码,该如何操作?

I need to upload the jar to the maven central repository and then provide my Java project to run the project via maven remote download dependencies, so I want to create a new project to hold the jar.
In addition, I would like to ask, if I do not want to provide the source code, how to operate?

group ID建议填写:推荐GitHub

io.github.你的用户名
第二种:自己的域名
需要设置TXT记录,

![image.png](https://img-blog.csdnimg.cn/img_convert/3f826672bee0bd21d130e440a8085708.png#clientId=uc9fe539a-1065-4&from=paste&height=213&id=u5ca3888c&margin=[object Object]&name=image.png&originHeight=426&originWidth=1380&originalType=binary&ratio=1&size=88012&status=done&style=none&taskId=ud74c5143-13b0-4897-bbb0-b31dfe74e07&width=690)
Project URL:项目地址,例如:https://github.com/项目名
SCM url :填写git地址,例如[https://github.com/sonatype/nexus-public.git](https://github.com/sonatype/nexus-public.git)
Username(s):不填写,您自己和您希望能够将工件部署到这个groupId的任何人的JIRA用户名的逗号分隔列表。
其他默认即可。

验证group ID

记得填写了刚才的域名了吗,这一步主要验证域名所有权。第一种是使用io.github.xxx,第二种自定义域名。
这里提示下:因为使用了com.xx顶级域名,所以以后com.xx.aa.bb以下子域名都可以直接创建。~好像是这样,忘了在哪里无意间看到的~

设置域名TXT记录(自定义域名)

如果使用了自定义域名,需要设置域名解析。一般提交issue后1分钟左右会告诉你,ticket ID,填写解析即可。如下图:需要改成自己的,记录值:可以填写自己的issue地址,也可以填写GitHub地址。这里我添加了2条TXT记录,等待约30分钟后,会收到通过通知。

![image.png](https://img-blog.csdnimg.cn/img_convert/69f7f5a0d0ec27f239707f5b3e000d75.png#clientId=uc9fe539a-1065-4&from=paste&height=585&id=u491f9211&margin=[object Object]&name=image.png&originHeight=1170&originWidth=1462&originalType=binary&ratio=1&size=88373&status=done&style=none&taskId=ud19823b9-18c3-489c-8c36-857732ac2ac&width=731)
![image.png](https://img-blog.csdnimg.cn/img_convert/e996619f589c516a5ef6eee7f92e5295.png#clientId=uc9fe539a-1065-4&from=paste&height=175&id=ud5011da3&margin=[object Object]&name=image.png&originHeight=350&originWidth=2328&originalType=binary&ratio=1&size=68455&status=done&style=none&taskId=ue3b79781-cee6-43d0-8a18-2b0508e1e9a&width=1164)

使用io.github.xx

如果使用这个,需要在GitHub上创建公开的仓库,仓库名就是发给的ticket ID,如下图:
![image.png](https://img-blog.csdnimg.cn/img_convert/795f74e5cabdef418ff80a36cd44b36c.png#clientId=uc9fe539a-1065-4&from=paste&height=364&id=ub3b0026d&margin=[object Object]&name=image.png&originHeight=728&originWidth=1596&originalType=binary&ratio=1&size=204067&status=done&style=none&taskId=u7eaef227-bb2a-48a3-ba6e-9b1bc589d80&width=798)

使用其他域名

比如使用了其他的GitHub pages,比如gitee,coding,gitlab,bitbucket等等。配置同GitHub。详见:https://central.sonatype.org/publish/requirements/#scm-information

这些都是申请maven的,如下图:
![image.png](https://img-blog.csdnimg.cn/img_convert/56145c2da2a8deab18ba1eeb2e80883c.png#clientId=uc9fe539a-1065-4&from=paste&height=715&id=u5ca61847&margin=[object Object]&name=image.png&originHeight=1430&originWidth=2576&originalType=binary&ratio=1&size=436708&status=done&style=none&taskId=u5dc7552a-6f69-4b41-b212-4239f91bd91&width=1288)

安装GPG

https://www.gnupg.org/download/index.html
去官网安装可视化客户端,免去输入命令麻烦!
Windows和Mac如下图:
Windows直达:https://www.gpg4win.org/download.html
Mac直达:https://gpgtools.org/
![image.png](https://img-blog.csdnimg.cn/img_convert/38876aeb9104a28b482f0664295315cc.png#clientId=uc9fe539a-1065-4&from=paste&height=482&id=u092a01ac&margin=[object Object]&name=image.png&originHeight=964&originWidth=1630&originalType=binary&ratio=1&size=208409&status=done&style=none&taskId=ud2f1c422-eeca-4a83-a312-783604e4b5e&width=815)
创建账号密码,个人猜测邮件密码随便输入,不需要和jira邮箱一致。这个密码后续第一次deploy时候会有提示框需要输入。这里,我输入邮件同jira.
![image.png](https://img-blog.csdnimg.cn/img_convert/2e91cf85f5e1de0049712cafa46d0aef.png#clientId=uc9fe539a-1065-4&from=paste&height=307&id=u0cf3684c&margin=[object Object]&name=image.png&originHeight=614&originWidth=900&originalType=binary&ratio=1&size=73014&status=done&style=none&taskId=u857f105e-d091-4385-85d9-67641d404a5&width=450)
上传推送给第三方key server,方便别人验证。
![image.png](https://img-blog.csdnimg.cn/img_convert/27c5d90e05703cb48980c7644daa15c4.png#clientId=uc9fe539a-1065-4&from=paste&height=437&id=u6efe9c3b&margin=[object Object]&name=image.png&originHeight=874&originWidth=764&originalType=binary&ratio=1&size=121296&status=done&style=none&taskId=u6bae99ec-b4f8-4451-a31d-f04140469c6&width=382)
![image.png](https://img-blog.csdnimg.cn/img_convert/8a379ee87b464c2f2ceb848eb50c2929.png#clientId=uc9fe539a-1065-4&from=paste&height=249&id=udd900b0f&margin=[object Object]&name=image.png&originHeight=498&originWidth=764&originalType=binary&ratio=1&size=51230&status=done&style=none&taskId=u587bfdc7-e022-4fc5-a1a5-11a7e114024&width=382)

配置maven

https://central.sonatype.org/publish/publish-maven/
maven/conf/setting.xml,增加如下图:
![image.png](https://img-blog.csdnimg.cn/img_convert/160ae017b0dfe6ddbbbebe5c8ade4930.png#clientId=uc9fe539a-1065-4&from=paste&height=557&id=u231c1f23&margin=[object Object]&name=image.png&originHeight=1114&originWidth=2142&originalType=binary&ratio=1&size=193981&status=done&style=none&taskId=ufef4a83a-637f-4633-8dcf-b19b6cc7afa&width=1071)

部署

可以使用maven命令或者直接idea - maven - lifecycle - deploy
![image.png](https://img-blog.csdnimg.cn/img_convert/e5b194f490c201aea7be351c0c3c81bc.png#clientId=u9ff32f6d-9164-4&from=paste&height=219&id=u5d4a4f4d&margin=[object Object]&name=image.png&originHeight=438&originWidth=464&originalType=binary&ratio=1&size=27519&status=done&style=none&taskId=u59debd57-4973-46b1-b49e-2879a50c1e7&width=232)
第一次,会提示输入密码,输入刚才创建的GPG密码。
![image.png](https://img-blog.csdnimg.cn/img_convert/f101b68f71619a4726daee845bbf2f05.png#clientId=u3922075c-6acc-4&from=paste&height=603&id=u7624e99a&margin=[object Object]&name=image.png&originHeight=1206&originWidth=2616&originalType=binary&ratio=1&size=472943&status=done&style=none&taskId=u75ade3c6-a4ce-4933-9661-276476f7929&width=1308)
执行过程日志:

/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java -Dmaven.multiModuleProjectDirectory=/Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common -Dmaven.home=/Users/janeyork/DEV/apache-maven-3.6.2 -Dclassworlds.conf=/Users/janeyork/DEV/apache-maven-3.6.2/bin/m2.conf "-Dmaven.ext.class.path=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven-event-listener.jar" "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=58980:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Users/janeyork/DEV/apache-maven-3.6.2/boot/plexus-classworlds-2.6.0.jar org.codehaus.classworlds.Launcher -Didea.version2020.1 -s /Users/janeyork/DEV/apache-maven-3.6.2/conf/settings.xml -Dmaven.repo.local=/Users/janeyork/DEV/MavenRepository deploy
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 1 modules...
[INFO] Installing Nexus Staging features:
[INFO]   ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin
[INFO] 
[INFO] ------------------------< com.pusdn:pgz-common >------------------------
[INFO] Building pgz-common 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ pgz-common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ pgz-common ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ pgz-common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ pgz-common ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ pgz-common ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ pgz-common ---
[INFO] Building jar: /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/pgz-common-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-gpg-plugin:1.5:sign (sign-artifacts) @ pgz-common ---
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ pgz-common ---
[INFO] Installing /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/pgz-common-0.0.1-SNAPSHOT.jar to /Users/janeyork/DEV/MavenRepository/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-SNAPSHOT.jar
[INFO] Installing /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/pom.xml to /Users/janeyork/DEV/MavenRepository/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-SNAPSHOT.pom
[INFO] Installing /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/pgz-common-0.0.1-SNAPSHOT.jar.asc to /Users/janeyork/DEV/MavenRepository/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-SNAPSHOT.jar.asc
[INFO] Installing /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/pgz-common-0.0.1-SNAPSHOT.pom.asc to /Users/janeyork/DEV/MavenRepository/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-SNAPSHOT.pom.asc
[INFO] 
[INFO] --- nexus-staging-maven-plugin:1.6.7:deploy (injected-nexus-deploy) @ pgz-common ---
[INFO] Performing deferred deploys (gathering into "/Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/nexus-staging/deferred")...
[INFO] Installing /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/pgz-common-0.0.1-SNAPSHOT.jar to /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/nexus-staging/deferred/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-SNAPSHOT.jar
[INFO] Installing /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/pom.xml to /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/nexus-staging/deferred/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-SNAPSHOT.pom
[INFO] Installing /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/pgz-common-0.0.1-SNAPSHOT.jar.asc to /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/nexus-staging/deferred/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-SNAPSHOT.jar.asc
[INFO] Installing /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/pgz-common-0.0.1-SNAPSHOT.pom.asc to /Users/janeyork/PRO/pusdn-center/pgz/RuoYi-Vue-master-3/pgz-common/target/nexus-staging/deferred/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-SNAPSHOT.pom.asc
[INFO] Deploying remotely...
[INFO] Bulk deploying locally gathered artifacts from directory: 
[INFO]  * Bulk deploying locally gathered snapshot artifacts
Downloading from ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/maven-metadata.xml
Uploading to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-20210821.155926-1.pom.asc
Uploaded to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-20210821.155926-1.pom.asc (833 B at 340 B/s)
Downloading from ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/maven-metadata.xml
Uploading to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/maven-metadata.xml
Uploaded to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/maven-metadata.xml (600 B at 182 B/s)
Uploading to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/maven-metadata.xml
Uploaded to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/maven-metadata.xml (279 B at 132 B/s)
Uploading to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-20210821.155926-1.jar
Uploaded to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-20210821.155926-1.jar (163 kB at 46 kB/s)
Uploading to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-20210821.155926-1.pom
Uploaded to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-20210821.155926-1.pom (10 kB at 4.8 kB/s)
Uploading to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/maven-metadata.xml
Uploaded to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/maven-metadata.xml (946 B at 455 B/s)
Uploading to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-20210821.155926-1.jar.asc
Uploaded to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/pgz-common-0.0.1-20210821.155926-1.jar.asc (833 B at 1.2 kB/s)
Uploading to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/maven-metadata.xml
Uploaded to ossrh: https://s01.oss.sonatype.org/content/repositories/snapshots/com/pusdn/pgz-common/0.0.1-SNAPSHOT/maven-metadata.xml (1.1 kB at 548 B/s)
[INFO]  * Bulk deploy of locally gathered snapshot artifacts finished.
[INFO] Remote deploy finished with success.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  26.433 s
[INFO] Finished at: 2021-08-21T23:59:44+08:00
[INFO] ------------------------------------------------------------------------

发布

总览

一旦release那么你就无法再次修改或者删除,如果jar真的有问题,那么只有通过发布新版本来告诉大家使用。这也就是为什么不用担心突然有一天开源的jar被删除。
https://central.sonatype.org/publish/release/
https://central.sonatype.org/faq/can-i-change-a-component/
发布后,一般会4小时左右才可以搜到https://search.maven.org/,也许是1-2天
autoReleaseAfterClose:如果为true,则会在deploy后直接release到central maven(version不要以SNAP SHOT结尾)。
如果为false,则要手动发布或者执行mvn nexus-staging:release,如果发现有问题mvn nexus-staging:drop
autoReleaseAfterClose=false,goals=deploy nexus-staging:release也会自动部署发布。

执行快照部署
当version后缀为SNAPSHOT
执行快照部署,没那么麻烦,只需要

mvn clean deploy

快照版本不会同步到中央存储库。如果希望用户使用快照版本,则需要将快照存储库添加到Nexus存储库管理器settings.xml或pom.xml中。成功部署的快照版本将在中找到https://s01.oss.sonatype.org/content/repositories/snapshots/
![image.png](https://img-blog.csdnimg.cn/img_convert/7b2c0464421e09be389937d9fa812ee0.png#clientId=u8e339eb1-6bcd-4&from=paste&height=240&id=u2114e59a&margin=[object Object]&name=image.png&originHeight=480&originWidth=1906&originalType=binary&ratio=1&size=97851&status=done&style=none&taskId=ud5df2ebe-9ade-46e2-89e0-04b62e8d838&width=953)

执行发布部署Release

tips:
个人推荐deploy后,手动去网页进行close - release如果有错误,可以网页进行drop。当然,这些都可以通过mvn命令通过终端执行。

为了执行发布部署,veresion不能包含-SNAPSHOT,插件和依赖关系声明也不能使用snapshotversions。这样可以确保您只依赖于其他发布的组件,理想情况下它们都可以在中央存储库中使用。这确保用户可以从中央存储库检索组件以及可传递的依赖项。
那么,某块中的或者项目中的版本号怎么修改呢?你可以手动更改,或者使用插件mvn versions:set -DnewVersion=1.2.3
多个某块,指定某块-projects

/Users/janeyork/DEV/apache-maven-3.6.2/bin/mvn clean deploy -projects pgz-common

/Users/janeyork/DEV/apache-maven-3.6.2/bin/mvn nexus-staging:release -projects pgz-common
  1. version中不包含snapshot,而且不引用发布插件。那么就会存在控制台https://s01.oss.sonatype.org/#stagingRepositories 而且需要手动open - close - release
  2. version中没有snapshot,引用自动release,会发布到central maven
  3. snap shot如何引用?而且snap shot直接发布,不会在staging repo里

发布SNAPSHOT

发布该版本,不需要提供source doc等。直接mvn clean deploy即可。发布成功后在https://s01.oss.sonatype.org/content/repositories/snapshots/可以查询到。当然也不会存储到staging repo中。

发布staging repo

估计仅在nexus pro版本使用,一般是企业版本内网部署私服。
https://help.sonatype.com/repomanager2/staging-releases

至此结束!

也不需要去回复关闭issue啥的,因为机器人自动检测,会自动处理的。

拓展

发布私有不开源source code

如果不上传Java doc和source code那么就会报错,如下图:
![image.png](https://img-blog.csdnimg.cn/img_convert/608dcf89eb38cd684e76a7a56e2e5e0a.png#clientId=u8e339eb1-6bcd-4&from=paste&height=701&id=u79b5ea11&margin=[object Object]&name=image.png&originHeight=1402&originWidth=2284&originalType=binary&ratio=1&size=326240&status=done&style=none&taskId=u3ba23abf-e204-4f3e-9bbb-e233ca2b828&width=1142)
发布fake包后,点击close校验成功后,可以点击release了。如下图:
![image.png](https://img-blog.csdnimg.cn/img_convert/29bc374fc68e0af6e21625aec4205de5.png#clientId=u8e339eb1-6bcd-4&from=paste&height=701&id=u12b94385&margin=[object Object]&name=image.png&originHeight=1402&originWidth=2628&originalType=binary&ratio=1&size=369500&status=done&style=none&taskId=u98b8fd7b-8226-4431-a80a-d9cd9334042&width=1314)
点击release发布到central maven
![image.png](https://img-blog.csdnimg.cn/img_convert/e652d005c4ebfc28640e7985695ac5b2.png#clientId=u8e339eb1-6bcd-4&from=paste&height=479&id=u4778b7bc&margin=[object Object]&name=image.png&originHeight=958&originWidth=1808&originalType=binary&ratio=1&size=193819&status=done&style=none&taskId=uf0dd23dc-cd4a-49c5-bb28-d24ab19fbe8&width=904)
具体生成fake包如下:
进入target目录,因为该目录下有pom和生成好的jar,source.jar和doc.jar随便找个文件即可,比如就是将其他的jar改个名即可。然后执行以下命令

/Users/janeyork/DEV/apache-maven-3.6.2/bin/mvn gpg:sign-and-deploy-file -Durl=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=pgz-common-0.0.1.pom -Dfile=pgz-common-0.0.1.jar

/Users/janeyork/DEV/apache-maven-3.6.2/bin/mvn gpg:sign-and-deploy-file -Durl=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=pgz-common-0.0.1.pom -Dfile=pgz-common-0.0.1-sources.jar -Dclassifier=sources

/Users/janeyork/DEV/apache-maven-3.6.2/bin/mvn gpg:sign-and-deploy-file -Durl=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=pgz-common-0.0.1.pom -Dfile=pgz-common-0.0.1-javadoc.jar -Dclassifier=javadoc

注意:换成自己的maven目录和自己的文件名
当执行成功后,网页staging repo中就会看到有文件了。然后close - release.执行截图如下:
![image.png](https://img-blog.csdnimg.cn/img_convert/9c6e0bfafd1c47c43aaaaf39a57d9964.png#clientId=u8e339eb1-6bcd-4&from=paste&height=699&id=ud8e6f635&margin=[object Object]&name=image.png&originHeight=1398&originWidth=2816&originalType=binary&ratio=1&size=437370&status=done&style=none&taskId=ue27ec9c7-7fd8-4b0d-bd7e-44de75fde10&width=1408)

另一种可以上传bundle.jar,然后浏览器网页上传。
https://central.sonatype.org/publish/publish-manual/

项目中使用SNAPSHOT

snapshot不上传source code不会有问题。
在主pom.xml增加如下配置,properties 节点后:

    <!-- 设定主仓库,按设定顺序进行查找  -->
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun Repository</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>ossrh</id>
            <name>ossrh-snapshots Repository</name>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

项目中使用已发布的release包

验证是否发布成功

验证是否发布到远程central maven,一般要想到maven仓库中https://search.maven.org/搜索到需要30分-4小时间,也有的几天。但是在nexus中可以立即搜到。
![image.png](https://img-blog.csdnimg.cn/img_convert/0c2fdde05f1e593314fce2bb347ba065.png#clientId=u8e339eb1-6bcd-4&from=paste&height=78&id=uf02fad49&margin=[object Object]&name=image.png&originHeight=156&originWidth=1602&originalType=binary&ratio=1&size=123281&status=done&style=none&taskId=udebf8dc9-9c89-4bb0-af1c-5b56df4c35b&width=801)
![image.png](https://img-blog.csdnimg.cn/img_convert/73fc4c28efb41d49f7b5d4cee08032da.png#clientId=u8e339eb1-6bcd-4&from=paste&height=596&id=u45a8f1f3&margin=[object Object]&name=image.png&originHeight=1192&originWidth=2610&originalType=binary&ratio=1&size=364950&status=done&style=none&taskId=uc24b5735-0387-479d-93db-4268366bffa&width=1305)

附件

模块的pom.xml

pom.xml文件:(fake jar or snapshot)直接将version加上SNAPSHOT就可以。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.pusdn</groupId>
    <artifactId>pgz-common</artifactId>
    <version>0.0.1</version>

    <name>pgz-sbv-common</name>
    <description>pgz-sbv common通用工具</description>
    <url>https://pgz-sbv.pusdn.com/</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>

    <dependencies>

        <!-- Spring框架基本的核心工具 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>

        <!-- SpringWeb模块 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>

        <!-- spring security 安全认证 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
            <version>2.2.13.RELEASE</version>
        </dependency>

        <!-- pagehelper 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>

        <!-- 自定义验证注解 -->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>

        <!--常用工具类 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>

        <!-- JSON工具类 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.5.1</version>
        </dependency>

        <!-- 阿里JSON解析器 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

        <!-- io常用工具类 -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>

        <!-- 文件上传工具类 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>

        <!-- excel工具 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

        <!-- yml解析器 -->
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>1.29</version>
        </dependency>

        <!--Token生成与解析-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>

        <!-- redis 缓存操作 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.2.13.RELEASE</version>
        </dependency>

        <!-- pool 对象池 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.8.0</version>
        </dependency>

        <!-- 解析客户端操作系统、浏览器等 -->
        <dependency>
            <groupId>eu.bitwalker</groupId>
            <artifactId>UserAgentUtils</artifactId>
            <version>1.21</version>
        </dependency>

        <!-- servlet包 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>

    </dependencies>

    <!-- 许可证信息 -->
    <licenses>
        <!-- Apache许可证 -->
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
        <!-- MIT许可证 -->
        <!--        <license>
                    <name>MIT License</name>
                    <url>http://www.opensource.org/licenses/mit-license.php</url>
                </license>-->
    </licenses>
    <!-- SCM信息 -> git在github上托管 -->
    <scm>
        <connection>scm:git:git://github.com/JaneYork/pgz-sbv-common.git</connection>
        <developerConnection>scm:git:ssh://github.com:JaneYork/pgz-sbv-common.git</developerConnection>
        <url>http://github.com/JaneYork/pgz-sbv-common/tree/master</url>
    </scm>

    <!-- 开发者信息 -->
    <developers>
        <developer>
            <name>JaneYork</name>
            <email>pgz@pusdn.com</email>
            <organization>Parallel Universe Laboratory</organization>
            <organizationUrl>https://www.pusdn.com</organizationUrl>
        </developer>
    </developers>

    <!-- 使用profile:由于生成javadoc和源jar以及使用GPG签署组件是一个相当耗时的过程,因此这些执行通常与正常的构建配置隔离并移动到配置文件中。然后,在通过激活配置文件执行部署时,将使用此配置文件。 -->
    <profiles>
        <profile>
            <id>ossrh</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <!-- 要生成Javadoc和Source jar文件,您必须配置javadoc和源Maven插件 -->
                    <!--                    <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>
                                            <executions>
                                                <execution>
                                                    <id>attach-javadocs</id>
                                                    <goals>
                                                        <goal>jar</goal>
                                                    </goals>
                                                </execution>
                                            </executions>
                                        </plugin>-->

                    <!--  必须配置GPG插件用于使用以下配置对组件进行签名 -->
                    <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>
                    <!--将组件部署到OSSRH并将其发布到Central Repository-->
                    <!--                    用于部署和发布的Nexus Staging Maven插件-->
    <!--                <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>false</autoReleaseAfterClose>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-release-plugin</artifactId>
                        <version>2.5.3</version>
                        <configuration>
                            <goals>deploy</goals>
                            &lt;!&ndash;                            <goals>deploy nexus-staging:release</goals>&ndash;&gt;
                            <autoVersionSubmodules>true</autoVersionSubmodules>
                            <useReleaseProfile>false</useReleaseProfile>
                            <releaseProfiles>release</releaseProfiles>
                        </configuration>
                    </plugin>-->
                </plugins>
            </build>
            <!-- 【注】snapshotRepository 与 repository 中的 id 一定要与 setting.xml 中 server 的 id 保持一致! -->
            <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>
        </profile>
    </profiles>


</project>

maven的conf

servers节点复制:

    <server>
      <id>ossrh</id>
      <username>jira用户名</username>
      <password>jira密码</password>
    </server>

疑问

  1. 如果在module中pom.xml指定依赖version或者使用最优version?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JaneYork

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值