记录发布工具类到maven仓库遇到的问题
1. 账号创建
注册Sonatype
的账户, 注册地址 这个地址是国外的,访问可能有点慢.注册的时候,用户名邮箱和密码一定需要基础,并且是常用的信息.后面需要用的上 注册登录进去的界面如下
2. 新建项目
项目名称言简意赅,描述该工程的功能.并且是独一无二的,GroupId
是你有权限的域名.可以是个人的域名,也可以是你代码仓库的域名 码云或者github
都行.项目路径和SCM路径为你所要上传的项目所在的仓库地址
Project: Community Support - Open Source Project Repository Hosting (OSSRH)
Issue TypeRequired: New Project
Summary: Jar包的名称
Group Id:cn.snowheart
Project URL:项目站点,如:https://gitee.com/snowheart/dingtalk-robot
SCM url:项目源码仓库,如:https://gitee.com/snowheart/dingtalk-robot.git
创建好了之后,就等待认证了.会有邮箱回复,回复的地址需要你配置到本地的xml和pom文件中
3. 账号认证
在此中间需要一系列的认证,maven中心会给你发邮箱.让你在仓库创建一个空项目.指定名称和group的 来确保操作的是你本人.并且由于存在时差.只能在Sonatype
通过评论进行交流.回复的也不是很及时.
4. 上传工作的准备
1. maven 配置文件修改
- 配置
setting.xml
文件 .添加 这个是上面注册的账号和密码
<server>
<id>sonatype-nexus-snapshots</id>
<username>Sonatype账号</username>
<password>Sonatype密码</password>
</server>
<server>
<id>sonatype-nexus-staging</id>
<username>Sonatype账号</username>
<password>Sonatype密码</password>
</server>
2. 项目的pom
文件修改
增加许可证,scm信息,开发者信息
- 项目所在仓库可以申请开源licens许可证 ,并添加到项目中
- 添加scm信息
- 添加 开发者信息
<description>
this is a util jar about operation excel,word. You can use the encapsulated method to generate Word or Excel on your own
</description>
<url>https://gitee.com/bodboy/poi-util</url>
<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>
</license>
</licenses>
<scm>
<tag>poi-utils-0.0.1</tag>
<url>git@gitee.com:bodboy/poi-util.git</url>
<connection>scm:git:git@gitee.com:bodboy/poi-util.git</connection>
<developerConnection>scm:git:git@gitee.com:bodboy/poi-util.git</developerConnection>
</scm>
<developers>
<developer>
<name>xiongchao</name>
<email>1374543195@qq.com</email>
<organization>https://gitee.com/bodboy/poi-util</organization>
</developer>
</developers>
- 发布信息配置
<!-- 发布管理信息 -->
<distributionManagement>
<repository>
<!-- 这里的id必须要和全局配置中的release id 一致 -->
<id>sonatype_releases</id>
<name>Nexus Release Repository</name>
<!-- 这里就是在创建issue成功后,对方回复的release发布地址-->
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
</repository>
<snapshotRepository>
<!-- 这里的id必须要和全局配置中的snapshot id 一致 -->
<id>sonatype_snapshots</id>
<name>Nexus Snapshot Repository</name>
<!-- 这里就是在创建issue成功后,对方回复的snapshot发布地址-->
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
- 发布版本配置
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
</profile>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
- 发布所需的插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.8.1</version>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>sonatype_releases</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<executable>C:/Program Files (x86)/GnuPG/bin/gpg.exe</executable>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<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>
<configuration>
<aggregate>true</aggregate>
<charset>UTF-8</charset>
<encoding>UTF-8</encoding>
<docencoding>UTF-8</docencoding>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
5. 配置pgp的公私钥信息
- Windows下使用gpg4win来进行配置。下载地址
- 安装好之后,打开
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
仓库会做校验。
6. 上传准备
上传指令 mvn clean deploy -P <profile-id>
打包过程中会要求输入gpg
密钥的Passphase
信息,输入即可
7. 发布
网上一般说的需要去https://oss.sonatype.org/#stagingRepositories
查看发布状态,我这边印象中都是自动部署的 大概两小时后可以看到你发布的