Sonatype 注册
点击 Create 之后,会跳转至一个 jira 页面 (sonatype 使用 jira 来追踪每一个项目进度),同时会发送一封邮件进行提醒,任务创建成功,正在等待处理。
等待一段时间,当状态变为已解决时即可,如果使用的是自己的域名,可能会被要求添加一条 txt 解析记录来验证域名的所有权,请留意活动日志内的注释栏
GPG 安装与配置
此处以 MacOS 举例,其它操作系统请自行查找资料
1 2 3 4 5
| # 安装gpg brew install gpg # 执行此命令查看是否安装成功 gpg --version
|
一些常用的命令
1 2 3 4 5 6 7 8 9 10
| # 查看安装版本,以及是否安装成功 gpg --version # 生成密钥对 gpg --gen-key # 查看公钥 gpg --list-keys # 公钥ID 将公钥发布到 PGP 密钥服务器 gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys # 公钥ID 查询公钥是否发布成功 gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys
|
创建密钥对并发布
1 2 3 4 5 6 7 8 9 10
| # 生成密钥对,根据提示输入姓名,邮箱,密码等,这里将密码记录下来,后面需要用到 gpg --gen-key # 查看公钥列表,并复制下图圈出来的公钥ID,替换发布公钥--send-keys参数的值 gpg --list-keys # 发布公钥 gpg --keyserver http://keyserver.ubuntu.com:11371 --send-keys 94C78FF90E7AE20205CE157A2BBBD1547C6B6B73 gpg --keyserver http://keys.openpgp.org:11371 --send-keys 94C78FF90E7AE20205CE157A2BBBD1547C6B6B73 # 验证是否发布成功 gpg --keyserver http://keyserver.ubuntu.com:11371 --recv-keys 94C78FF90E7AE20205CE157A2BBBD1547C6B6B73 gpg --keyserver http://keys.openpgp.org:11371 --recv-keys 94C78FF90E7AE20205CE157A2BBBD1547C6B6B73
|
Maven 配置
编辑 Maven 的 settings.xml,并添加如下内容
1 2 3 4 5 6 7
| <servers> <server> <id>ossrh</id> <username>Sonatype Account</username> <password>Sonatype Password</password> </server> </servers>
|
项目配置
Sonatype 的要求参考: https://central.sonatype.org/pages/requirements.html
Sonatype 提供的 pom 文件 demo:https://github.com/simpligility/ossrh-demo/blob/master/pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| <?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.mikuac</groupId> <artifactId>shiro</artifactId> <version>1.0.0</version> <name>Shiro</name> <url>https://mikuac.com</url> <description>基于OneBot协议的SpringBoot快速开发框架</description>
<properties> <java.version>15</java.version> <maven.compiler.source>15</maven.compiler.source> <maven.compiler.target>15</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties>
<scm> <connection>scm:git:git://github.com/MisakaTAT/Shiro.git</connection> <developerConnection>scm:git:ssh://github.com/MisakaTAT/Shiro.git</developerConnection> <url>https://github.com/MisakaTAT/Shiro/tree/main</url> </scm>
<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>
<developers> <developer> <name>MisakaTAT</name> <email>i@mikuac.com</email> </developer> </developers>
<licenses> <license> <name>GNU General Public License v3.0</name> <url>https://github.com/MisakaTAT/Shiro/blob/main/LICENSE</url> <distribution>repo</distribution> </license> </licenses>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>${maven.compiler.source}</source> <target>${maven.compiler.target}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
<dependencies> </dependencies>
</project>
|
发布
1 2 3
| # 进入到项目目录执行发布命令 mvn clean deploy -DskipTests # 上传完成后登录 https://s01.oss.sonatype.org/#stagingRepositories 选择上传的项目,点击close,等待验证通过后点击release即可
|
发布完成后登录 https://s01.oss.sonatype.org 可以查看到自己发布的项目,此时还无法在中央仓库找到,需要等待同步。
问题
如果是直接在 idea 内点击 deploy 的话会无法弹出 gpg 的密码输入框,导致签名失败
gpg: signing failed: Inappropriate ioctl for device