Exploring
首页
  • Java

    • 面向对象的思想OOP
    • 浅谈Java反射原理
    • endorsed覆盖JDK中的类
  • 认证与授权

    • LDAP概念和原理介绍
    • OAuth2介绍
  • Impala

    • Impala 介绍
  • MySQL

    • 关于MySQL的一些面试题
    • 解决MySQL不到中文数据
    • 数据库之事务与实现原理
  • Oracle

    • oracle的表空间,用户管理,表操作,函数
    • oracle的查询、视图、索引
    • plsql简单入门
  • Redis

    • 数据类型详解
    • 跳越表
    • 数据持久化的两种方式
  • 共识算法

    • gossip
  • RPC

    • GRPC初识与快速入门
    • ProtocolBuffer基本语法
  • RabbitMQ

    • RabbitMQ入门程序之HelloWorld
    • RabbitMQ之工作模式
  • Zookeeper

    • Zookeeper一文入门
  • Docker

    • Docker入门初体验
  • Maven

    • 把自己的包到Maven中央仓库
    • Maven之自定义插件
  • Nginx

    • nginx的安装
    • nginx的配置文件
    • nignx 的变量
  • Tomcat

    • Servlet3通过SPI进行注册组件
  • Vagrant

    • vagrant 初始化
    • vagrant 常用配置
    • vagrant 自己制作 box
  • Linux

    • 启动方式 Systemd
    • 后台服务
    • 防火墙与 Iptables
  • 设计模式

    • 设计模式-代理
    • 设计模式-单例模式
    • 设计模式-迭代器
  • 分布式

    • CAP 理论
  • 数据结构

    • 数据结构之堆Heap
    • 数据结构之哈希表
    • 数据结构之队列
  • 计算机网络

    • HTTP与HTTPS详解
    • 浅谈DNS协议
    • ISP中的网络层
  • 算法

    • 常用查找算法及Java实现
    • 常用排序算法及Java实现
    • 迪杰斯特拉算法
  • 操作系统

    • 操作系统之进程调度算法
    • 操作系统之进程通讯IPC
    • 操作系统之内存管理
  • 抓包

    • 生成安卓系统证书
  • 加解密

    • 常见加密算法
    • 公开秘钥基础知识
    • RSA 解析
  • Windows

    • scoop 包管理
    • windows-terminal 配置
    • 增强 PowerShell
归档
Github (opens new window)
首页
  • Java

    • 面向对象的思想OOP
    • 浅谈Java反射原理
    • endorsed覆盖JDK中的类
  • 认证与授权

    • LDAP概念和原理介绍
    • OAuth2介绍
  • Impala

    • Impala 介绍
  • MySQL

    • 关于MySQL的一些面试题
    • 解决MySQL不到中文数据
    • 数据库之事务与实现原理
  • Oracle

    • oracle的表空间,用户管理,表操作,函数
    • oracle的查询、视图、索引
    • plsql简单入门
  • Redis

    • 数据类型详解
    • 跳越表
    • 数据持久化的两种方式
  • 共识算法

    • gossip
  • RPC

    • GRPC初识与快速入门
    • ProtocolBuffer基本语法
  • RabbitMQ

    • RabbitMQ入门程序之HelloWorld
    • RabbitMQ之工作模式
  • Zookeeper

    • Zookeeper一文入门
  • Docker

    • Docker入门初体验
  • Maven

    • 把自己的包到Maven中央仓库
    • Maven之自定义插件
  • Nginx

    • nginx的安装
    • nginx的配置文件
    • nignx 的变量
  • Tomcat

    • Servlet3通过SPI进行注册组件
  • Vagrant

    • vagrant 初始化
    • vagrant 常用配置
    • vagrant 自己制作 box
  • Linux

    • 启动方式 Systemd
    • 后台服务
    • 防火墙与 Iptables
  • 设计模式

    • 设计模式-代理
    • 设计模式-单例模式
    • 设计模式-迭代器
  • 分布式

    • CAP 理论
  • 数据结构

    • 数据结构之堆Heap
    • 数据结构之哈希表
    • 数据结构之队列
  • 计算机网络

    • HTTP与HTTPS详解
    • 浅谈DNS协议
    • ISP中的网络层
  • 算法

    • 常用查找算法及Java实现
    • 常用排序算法及Java实现
    • 迪杰斯特拉算法
  • 操作系统

    • 操作系统之进程调度算法
    • 操作系统之进程通讯IPC
    • 操作系统之内存管理
  • 抓包

    • 生成安卓系统证书
  • 加解密

    • 常见加密算法
    • 公开秘钥基础知识
    • RSA 解析
  • Windows

    • scoop 包管理
    • windows-terminal 配置
    • 增强 PowerShell
归档
Github (opens new window)
  • Docker

  • Maven

    • 把自己的包到Maven中央仓库
      • Sonatype
      • 准备 GPG
        • 查看是否安装
        • 生成秘钥对
        • 查看公钥
        • 将公钥发布到 PGP 密钥服务器
        • 查询公钥是否发布成功
      • 修改 Maven 配置文件
      • 部署
      • 一些问题
        • gpg: 签名时失败处理
        • 执行 Close 出现 Failed: Signature Validation
      • 到仓库查看
    • Maven之自定义插件
  • Nginx

  • Tomcat

  • Vagrant

  • Linux

  • DevOps
  • Maven
unclezs
2020-11-30
0
目录

把自己的包到Maven中央仓库

# Sonatype

  1. 注册Sonatype (opens new window) 账户。
  2. 登录Sonaytype Jira (opens new window)
  3. 创建如下的 issue,申请发版权限,等待管理员审核。
  4. 等待回复,如果你填了自定义域名则会这么回复你。也就是有自定义域名就解析自定义域名TXT到这个issue,如果没有则用github的
  5. 我是自定义域名所以提交了
  6. 然后回复issue,说你已经成功解析了,然后等他处理就行了

# 准备 GPG

这个用于加密的,在发release的时候会校验,发快照版本不会校验。

# 查看是否安装

gpg --version
1

能够显示 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
1

# 查看公钥

gpg --list-keys
1

可见这里的公钥的 ID是:5A68166AF292264925C6A5053C6675A0EE56F4AA,稍后就会用到。

# 将公钥发布到 PGP 密钥服务器

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 5A68166AF292264925C6A5053C6675A0EE56F4AA
1

此后可使用本地的私钥来对上传构件进行数字签名,而下载该构件的用户可通过上传的公钥来验证签名,也就是说,大家可以验证这个构件是否由本人上传的,因为有可能该构件被坏人给篡改了。

如果提示发布失败,可以多尝试几次,如果实在不行,可更换地址源,如 hkp://keyserver.ubuntu.com:11371。

# 查询公钥是否发布成功

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 5A68166AF292264925C6A5053C6675A0EE56F4AA
1

实际上就是从 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>
1
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>
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

# 部署

mvn clean deploy
1

如果成功了直接上 https://oss.sonatype.org/ (opens new window) 去查看

打release包会先进行暂存,需要到这上面进行操作发布,首先选中发布的版本(上传后看的到),点击close,如果校验通过,则点击release发布,然后在issue处回复并关闭。

# 一些问题

# gpg: 签名时失败处理

gpg: signing failed: Inappropriate ioctl for device
1

添加环境变量

export GPG_TTY=$(tty)
1

# 执行 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) 去搜索自己的包看看是不是存在。同步会有一定延迟。

在 GitHub 编辑此页 (opens new window)
上次更新: 2024/02/25, 12:11:11
Docker入门初体验
Maven之自定义插件

← Docker入门初体验 Maven之自定义插件→

Theme by Vdoing | Copyright © 2018-2024 unclezs
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式