把自己的包到Maven中央仓库
# Sonatype
- 注册Sonatype (opens new window) 账户。
- 登录Sonaytype Jira (opens new window)
- 创建如下的 issue,申请发版权限,等待管理员审核。
- 等待回复,如果你填了自定义域名则会这么回复你。也就是有自定义域名就解析自定义域名TXT到这个issue,如果没有则用github的
- 我是自定义域名所以提交了
- 然后回复issue,说你已经成功解析了,然后等他处理就行了
# 准备 GPG
这个用于加密的,在发release的时候会校验,发快照版本不会校验。
# 查看是否安装
gpg --version
能够显示 GPG 的版本信息,说明已经安装,否则需要去官网下载安装。下载地址如下:
- window: http://www.gpg4win.org/download.html (opens new window)
- OSX: https://gnupg.org/download/index.html (opens new window)
能够显示 GPG 的版本信息,说明已经安装,否则需要去官网下载安装。下载地址如下:
# 生成秘钥对
此时需要输入姓名、邮箱等字段,其它字段可使用默认值,此外,还需要输入一个 Passphase,相当于一个密钥库的密码,一定不要忘了,也不要告诉别人,一定要记下来,后面会用到。
gpg --gen-key
# 查看公钥
gpg --list-keys
可见这里的公钥的 ID是:5A68166AF292264925C6A5053C6675A0EE56F4AA,稍后就会用到。
# 将公钥发布到 PGP 密钥服务器
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 5A68166AF292264925C6A5053C6675A0EE56F4AA
此后可使用本地的私钥来对上传构件进行数字签名,而下载该构件的用户可通过上传的公钥来验证签名,也就是说,大家可以验证这个构件是否由本人上传的,因为有可能该构件被坏人给篡改了。
如果提示发布失败,可以多尝试几次,如果实在不行,可更换地址源,如 hkp://keyserver.ubuntu.com:11371。
# 查询公钥是否发布成功
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 5A68166AF292264925C6A5053C6675A0EE56F4AA
实际上就是从 key server 上通过公钥 ID 来接收公钥,此外也可以到 sks-keyservers.net 上通过公钥 ID 去查询。
# 修改 Maven 配置文件
使用自己注册的 Sonatype 账号的用户名与密码来配置server信息到setting.xml
<settings>
...
<servers>
<server>
<id>oss</id>
<username>用户名</username>
<password>密码</password>
</server>
</servers>
...
</settings>
2
3
4
5
6
7
8
9
10
11
修改项目的Maven配置pom.xml,注意下面的都是必备的
<properties>
<java.version>1.8</java.version>
<project.build.sourceencoding>UTF-8</project.build.sourceencoding>
</properties>
<name>Unclezs's tools repo</name>
<description>Unclezs's repo</description>
<url>https://github.com/unclezs/xtools</url>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<name>unclezs</name>
<email>[email protected]</email>
</developer>
</developers>
<scm>
<url>https://github.com/unclezs/xtools.git</url>
<connection>scm:git:https://github.com/xtools.git</connection>
</scm>
<distributionManagement>
<snapshotRepository>
<!-- 对应setting.xml里面的ID -->
<id>oss</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>oss</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<!-- doc plugin,Maven API文档生成插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<additionalJOptions>
<additionalJOption>-Xdoclint:none</additionalJOption>
</additionalJOptions>
</configuration>
</plugin>
<!-- resources plugin,Maven 资源插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- compiler plugin,Maven 编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<!-- gpg 加密校验 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
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
# 部署
mvn clean deploy
如果成功了直接上 https://oss.sonatype.org/ (opens new window) 去查看
打release包会先进行暂存,需要到这上面进行操作发布,首先选中发布的版本(上传后看的到),点击close,如果校验通过,则点击release发布,然后在issue处回复并关闭。
# 一些问题
# gpg: 签名时失败处理
gpg: signing failed: Inappropriate ioctl for device
添加环境变量
export GPG_TTY=$(tty)
# 执行 Close 出现 Failed: Signature Validation
到 https://gpgtools.org/ (opens new window) 上下载了macOS 版本的 GPG Suite Tools客户端工具,安装好之后,打开 GPG Keychain,这是你可能会直接看到刚才生成的GPG秘钥被列出来,你只需要选中,然后右键选中 Send Public to Key Server,接着等待3-5秒,弹出提示 successfully,这一次是真的上传成功了;再次重复 deploy=》Close-》release
# 到仓库查看
https://search.maven.org/ (opens new window) 去搜索自己的包看看是不是存在。同步会有一定延迟。