• Java实战发包到远程maven仓库


    一、前言

    Maven是一个Java项目的管理和构建工具,Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。

    Maven中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库包含了绝大多数流行的开源Java构件,当我们需要使用某个构建功能时,我们只需要在pom文件引入其maven坐标即可。

    本文我们讲解如何把自己的jar发布到maven中央仓库里面,供外网其他用户使用。

    注册Sonatype账号

    登录 issues.sonatype.org/secure/Sign… 注册一个账号

    创建一个issue

    菜单栏->Create 弹出创建界面,Project选择Community Support - Open Source Project Repository Hosting (OSSRH) 。Issue Type选择 New Project。 Group Id填写maven坐标的Group Id。

    注意:申请一个Group Id后,就可以发布不同的artifactId对应的jar。

    发包

    安装 gpg

    brew install gnupg

    创建并查看自己的 key

    gpg --gen-key # 创建自己的key

    gpg --list-secret-keys # 查看自己的key

    推送key到签名服务器

    gpg --keyserver keys.gnupg.net --send-keys xxxxx gpg --keyserver keys.gnupg.net --recv-keys xxxxx gpg --keyserver keyserver.ubuntu.com --send-keys xxxxx gpg --keyserver keyserver.ubuntu.com --recv-keys xxxxx

    配置pom文件

    在要发布的包的pom文件里面,添加如下插件:

    1. <plugins>
    2. <plugin>
    3. <artifactId>nexus-staging-maven-pluginartifactId>
    4. <configuration>
    5. <autoReleaseAfterClose>trueautoReleaseAfterClose>
    6. <nexusUrl>https://s01.oss.sonatype.org/nexusUrl>
    7. <serverId>ossrhserverId>
    8. configuration>
    9. <extensions>trueextensions>
    10. <groupId>org.sonatype.pluginsgroupId>
    11. <version>1.6.7version>
    12. plugin>
    13. <plugin>
    14. <artifactId>maven-compiler-pluginartifactId>
    15. <configuration>
    16. <encoding>UTF-8encoding>
    17. <source>1.8source>
    18. <target>1.8target>
    19. configuration>
    20. <version>${maven-compiler-plugin.version}version>
    21. plugin>
    22. <plugin>
    23. <artifactId>maven-resources-pluginartifactId>
    24. <configuration>
    25. <encoding>UTF-8encoding>
    26. configuration>
    27. <version>${maven-resources-plugin.version}version>
    28. plugin>
    29. <plugin>
    30. <artifactId>maven-source-pluginartifactId>
    31. <executions>
    32. <execution>
    33. <goals>
    34. <goal>jargoal>
    35. goals>
    36. <id>attach-sourcesid>
    37. execution>
    38. executions>
    39. <version>${maven-source-plugin.version}version>
    40. plugin>
    41. <plugin>
    42. <artifactId>maven-surefire-pluginartifactId>
    43. <configuration>
    44. <skipTests>trueskipTests>
    45. configuration>
    46. <groupId>org.apache.maven.pluginsgroupId>
    47. <version>${maven-surefire-plugin.version}version>
    48. plugin>
    49. <plugin>
    50. <artifactId>maven-jar-pluginartifactId>
    51. <configuration>
    52. <archive>
    53. <manifest>
    54. <addDefaultImplementationEntries>trueaddDefaultImplementationEntries>
    55. manifest>
    56. archive>
    57. configuration>
    58. <groupId>org.apache.maven.pluginsgroupId>
    59. <version>${maven-jar-plugin.version}version>
    60. plugin>
    61. <plugin>
    62. <artifactId>maven-javadoc-pluginartifactId>
    63. <configuration>
    64. <charset>UTF-8charset>
    65. <docencoding>UTF-8docencoding>
    66. <encoding>UTF-8encoding>
    67. <links>
    68. <link>http://docs.oracle.com/javase/8/docs/apilink>
    69. links>
    70. <show>publicshow>
    71. configuration>
    72. <executions>
    73. <execution>
    74. <goals>
    75. <goal>jargoal>
    76. goals>
    77. <id>attach-javadocid>
    78. execution>
    79. executions>
    80. <groupId>org.apache.maven.pluginsgroupId>
    81. <version>${maven-javadoc-plugin.version}version>
    82. plugin>
    83. <plugin>
    84. <artifactId>maven-gpg-pluginartifactId>
    85. <executions>
    86. <execution>
    87. <configuration>
    88. <gpgArguments>
    89. <arg>--pinentry-modearg>
    90. <arg>loopbackarg>
    91. gpgArguments>
    92. configuration>
    93. <goals>
    94. <goal>signgoal>
    95. goals>
    96. <id>sign-artifactsid>
    97. <phase>verifyphase>
    98. execution>
    99. executions>
    100. <groupId>org.apache.maven.pluginsgroupId>
    101. <version>${maven-gpg-plugin.version}version>
    102. plugin>
    103. plugins>

    执行发布命令

    切换到要发的包的目录,执行: mvn clean deploy -Dgpg.passphrase=自己的gpg的密码

    等待发布完毕,之后24小时后,会在mvnrepository.com/repos/centr… 搜到自己的包。

     

  • 相关阅读:
    基于双层共识控制的直流微电网优化调度(Matlab代码实现)
    JAVA客户端使用账号密码调用influxdb2报错:{“code“:“unauthorized“,“message“:“Unauthorized“}
    C++-开源日志库-easylogging-配置-格式记录-线程安全
    腾讯会议麦克风没有声音怎么办?
    MAC设备(M1)环境下编译安装openCV for Java
    Web自动化框架中验证码识别处理全攻略,让测试更得心应手!
    深入解析域名短链接生成原理及其在Python/Flask中的实现策略:一篇全面的指南与代码示例
    如何清理C盘
    CANoe-Model Editor无法修改ARXML文件的问题、E2E在SOME/IP通信中的使用问题
    C#多线程(三)线程高级篇
  • 原文地址:https://blog.csdn.net/Java_ttcd/article/details/126298810