从来都是从中央仓库下载jar,这次需要向中央仓库提交jar, 利用Sonatype OSSRH可以把jar等资源提交给Maven的中央仓库。

Sonatype OSSRH介绍:

Sonatype OSSRH使用Nexus 为开源项目提供仓库管理服务,该仓库就是所谓maven的中央仓库,OSSRH允许我们向Maven中央仓库提交二进制文件。

1:提交(deploy)开发版本的二进制文件(snapshorts)

2: 阶段性的发布版本

3:发布一个release,然后同步他们到中央仓库。

初始阶段

1:注册一个JIRA账号:https://issues.sonatype.org/secure/Signup!default.jspa

2:创建一个新工程的单:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134

只有当这个jira单的状态我resolved时,才可以提交jar包

审查要求

1:提供javadoc和source

2: 使用gpg或者pgp对文件进行签名

3: pom.xml文件

4:正确的坐标:groupId,artifactId,version

  1. <groupId>com.sequoiadb</groupId>
  2. <artifactId>sequoiadb-driver</artifactId>
  3. <version>1.12</version>

5: projectName,description,url等。

  1. <name>${project.groupId}:${project.artifactId}</name>
  2. <description>SequoiaDB Driver Library</description>
  3. <url>https://github.com/SequoiaDB/SequoiaDB</url>

6: license 信息

  1. <licenses>
  2. <license>
  3. <name>The Apache License, Version 2.0</name>
  4. <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
  5. </license>
  6. </licenses>

7 : 开发者信息

  1. <developers>
  2. <developer>
  3. <name>linyoubing</name>
  4. <email>linyoubing@sequoiadb.com</email>
  5. <organization>sequoiadb</organization>
  6. <organizationUrl>http://www.sequoiadb.com</organizationUrl>
  7. </developer>
  8. </developers>

8: SCM信息

  1. <scm>
  2. <connection>
  3. scm:git:https://github.com/SequoiaDB/SequoiaDB.git
  4. </connection>
  5. <developerConnection>
  6. scm:git:https://github.com/SequoiaDB/SequoiaDB.git
  7. </developerConnection>
  8. <url>https://github.com/SequoiaDB/SequoiaDB</url>
  9. <tag>v1.12</tag>
  10. </scm>

部署

可以使用多种方式部署,这是使用maven的方式

1:分布管理和认证:

我使用了maven部署插件,所以pom.xml中加入:

  1. <distributionManagement>
  2. <snapshotRepository>
  3. <id>ossrh</id>
  4. <url>https://oss.sonatype.org/content/repositories/snapshots</url>
  5. </snapshotRepository>
  6. <repository>
  7. <id>ossrh</id>
  8. <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
  9. </repository>
  10. </distributionManagement>

需要在maven_home/conf/settings.xml配置jira的账号和密码

  1. <settings>
  2. <servers>
  3. <server>
  4. <id>ossrh</id>
  5. <username>your-jira-id</username>
  6. <password>your-jira-pwd</password>
  7. </server>
  8. </servers>
  9. </settings>

2:配置生成javadoc和sources包的插件:

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-source-plugin</artifactId>
  4. <version>2.2.1</version>
  5. <executions>
  6. <execution>
  7. <id>attach-sources</id>
  8. <goals>
  9. <goal>jar-no-fork</goal>
  10. </goals>
  11. </execution>
  12. </executions>
  13. </plugin>
  14. <plugin>
  15. <groupId>org.apache.maven.plugins</groupId>
  16. <artifactId>maven-javadoc-plugin</artifactId>
  17. <version>2.9.1</version>
  18. <executions>
  19. <execution>
  20. <id>attach-javadocs</id>
  21. <goals>
  22. <goal>jar</goal>
  23. </goals>
  24. </execution>
  25. </executions>
  26. </plugin>

3:GPG自动签名的插件:

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-gpg-plugin</artifactId>
  4. <version>1.5</version>
  5. <executions>
  6. <execution>
  7. <id>sign-artifacts</id>
  8. <phase>verify</phase>
  9. <goals>
  10. <goal>sign</goal>
  11. </goals>
  12. </execution>
  13. </executions>
  14. </plugin>

在settings.xml中配置gpg的签名 :(需要先用gpg来生成)

  1. <settings>
  2. <profiles>
  3. <profile>
  4. <id>ossrh</id>
  5. <activation>
  6. <activeByDefault>true</activeByDefault>
  7. </activation>
  8. <properties>
  9. <gpg.executable>gpg2</gpg.executable>
  10. <gpg.passphrase>the_pass_phrase</gpg.passphrase>
  11. </properties>
  12. </profile>
  13. </profiles>
  14. </settings>

4: 使用Profile

应该javadoc和source的jar包生成也需要使用gpg来签名,所以很浪费时间,而且这些执行通常都独立于标准构建流程,所以把他们移动到一个profile.

  1. <profiles>
  2. <profile>
  3. <id>release</id>
  4. <build>
  5. <plugins>
  6. <plugin>
  7. <groupId>org.sonatype.plugins</groupId>
  8. <artifactId>nexus-staging-maven-plugin</artifactId>
  9. <version>1.6.3</version>
  10. <extensions>true</extensions>
  11. <configuration>
  12. <serverId>ossrh</serverId>
  13. <nexusUrl>https://oss.sonatype.org/</nexusUrl>
  14. <autoReleaseAfterClose>true</autoReleaseAfterClose>
  15. </configuration>
  16. </plugin>
  17. <plugin>
  18. <groupId>org.apache.maven.plugins</groupId>
  19. <artifactId>maven-release-plugin</artifactId>
  20. <version>2.5</version>
  21. <configuration>
  22. <autoVersionSubmodules>true</autoVersionSubmodules>
  23. <useReleaseProfile>false</useReleaseProfile>
  24. <releaseProfiles>release</releaseProfiles>
  25. <goals>deploy</goals>
  26. </configuration>
  27. </plugin>
  28. <plugin>
  29. <groupId>org.apache.maven.plugins</groupId>
  30. <artifactId>maven-compiler-plugin</artifactId>
  31. <version>3.0</version>
  32. <configuration>
  33. <source>1.6</source>
  34. <target>1.6</target>
  35. </configuration>
  36. </plugin>
  37. <plugin>
  38. <groupId>org.apache.maven.plugins</groupId>
  39. <artifactId>maven-gpg-plugin</artifactId>
  40. <version>1.5</version>
  41. <executions>
  42. <execution>
  43. <id>sign-artifacts</id>
  44. <phase>verify</phase>
  45. <goals>
  46. <goal>sign</goal>
  47. </goals>
  48. </execution>
  49. </executions>
  50. </plugin>
  51. <plugin>
  52. <groupId>org.apache.maven.plugins</groupId>
  53. <artifactId>maven-source-plugin</artifactId>
  54. <version>2.2.1</version>
  55. <executions>
  56. <execution>
  57. <id>attach-sources</id>
  58. <goals>
  59. <goal>jar-no-fork</goal>
  60. </goals>
  61. </execution>
  62. </executions>
  63. </plugin>
  64. <plugin>
  65. <groupId>org.apache.maven.plugins</groupId>
  66. <artifactId>maven-javadoc-plugin</artifactId>
  67. <version>2.9</version>
  68. <executions>
  69. <execution>
  70. <id>attach-javadocs</id>
  71. <goals>
  72. <goal>jar</goal>
  73. </goals>
  74. </execution>
  75. </executions>
  76. </plugin>
  77. </plugins>
  78. </build>
  79. </profile>
  80. </profiles>

提交一个snapshot版本:

1:修改version加一个-SNAPSHOT, 执行 mvn clean deploy

发布一个release版本

1:修改version 不要加-SNAPSHOT,  可以手动修改,也可以执行

  1. mvn versions:set -DnewVersion=1.2.3

2: 执行 mvn clean deploy -P release

原文:向maven中央仓库提交jar

相关:

上传Android或Java库到Maven central repository

发布Maven构件到中央仓

向maven中央仓库提交jar的更多相关文章

  1. 从Maven中央仓库下载jar包

    1. Maven中央仓库 Maven中央仓库存放着比较新版本比较全的 jar 包 仓库网址:https://mvnrepository.com/ 2. 使用Maven中央仓库的 jar 包 (1) 在 ...

  2. 记一次向maven中央仓库提交依赖包

    Maven是Java中最常用的依赖管理工具,Maven的中央仓库保罗万象,涵盖了各个领域的框架.工具和文档,也是Java生态强大生命力的体现.我们自己开发的一些有用有趣的代码也可以通过打包上传到mav ...

  3. 如何发布jar包到maven中央仓库

    自使用maven以来,没少使用maven中央仓库中的各种jar包,方便有效,但是咱们也不能总是只取不予,也应该懂得奉献,当你写好了一个十分好用的jar包,想贡献出去给大家使用的时候,应该怎么做呢?当然 ...

  4. Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库

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

  5. 将自己的项目作为jar包发布到maven中央仓库

    maven版本是3.5.0,jdk是1.8(注意,不是说项目是1.8就行,必须是环境变量里的也是,不能超过1.8,否则一大堆问题,执行mvn前用javac -version看下版本) 一:先在sona ...

  6. maven插件上传本地jar包到maven中央仓库

    settings配置(如果设置后有问题,可以重启idea,保证重新加载settings文件): <!-- 上传jar包到maven中央仓库配置start --> <server> ...

  7. 将jar包发布到maven中央仓库

    将jar包发布到maven中央仓库 最近做了一个swagger-ui的开源项目,因为是采用vue进行解析swagger-json,需要前端支持,为了后端也能方便的使用此功能,所以将vue项目编译后的结 ...

  8. 使用CI/CD工具Github Action发布jar到Maven中央仓库

    之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...

  9. 我把自己的java库发布到了maven中央仓库,从此可以像Jackson、Spring的jar一样使用它了

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. linux hosts文件详+mac主机名被莫名其妙修改

    1.名词解析 主机名: 无论是在局域网还是在INTERNET上,每台主机都有一个IP地址,用来区分当前是那一台机器(其实底层是使用机器的物理地址),也就是说IP地址就是一个主机的门牌号,唯一的标示这一 ...

  2. wireshark 导出所有filter出来的包

    1.Edit->Mark All Displayed 2.File->Export Specified Packets->Marked packets only(选中)

  3. 开坑Java编写Json解析器,简明教程

    https://zhuanlan.zhihu.com/p/22460835?refer=json-tutorial 课程不是我原创,我打算照他的这个C版本来重写一遍Java的,打算用面向对象的方式来编 ...

  4. Spark MLlib - LFW

    val path = "/usr/data/lfw-a/*" val rdd = sc.wholeTextFiles(path) val first = rdd.first pri ...

  5. simpson

    使用二次函数拟合复杂的连续函数求积分 对于(l,r)拟合的积分为(r-l)*(f(l)+4*f((l+r)/2)+f(r))/6 ___________________________ BZOJ217 ...

  6. Gone Fishing POJ 1042

    #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> us ...

  7. 常用的shell脚本

    [root@WEB1-live sh]# cat licai_fabu.sh #!/bin/bash pid=` ps -ef | grep java | grep '8011' | awk '{pr ...

  8. java-读取xml

    1.使用w3c.document /** * 测试 * */ public static void testReadLabel() { String path = "C:\\Users\\h ...

  9. 一个简单的CSS3+js 实现3D BOX

    <!doctype html><html><head> <meta charset="UTF-8"> <title>Do ...

  10. Oracle查询时间字段并排序

    select * from geimstatus_history twhere to_date(t.data_time,'YYYY-mm-dd') = to_date(sysdate,'YYYY-mm ...