发包流程
注册账号
安装GPG
什么是GPG
第一部分:GPG 是一个加密、解密、签名、验证工具。前面介绍了加解密的基本概念、相关的算法。但这些概念和算法并不能直接使用,而 GPG 就是一个使用这些算法,对信息进行加密、解密、签名、验证的工具。具体介绍见如何使用部分。
第二部分:GPG 还是一个密钥管理工具,可以用于管理自己的私钥,其他人的公钥,以及提供了一套公钥信任体系。前面加解密概念中提到,公钥要广而告之,GPG 可以帮助我们更加安全高效的交换公钥。具体介绍见管理密钥部分。
另外在使用 GPG 时,可能还会看到 PGP、OpenPGP 等名词,他们是什么关系?PGP (Pretty Good Privacy) 是最早的于 1991 年发布的此类工具。PGP 很好用,但他是商业软件。于是 GNU 计划在 1999 年发布了开源版本的 GNU Privacy Guard (GnuPG 或 GPG)。而 OpenPGP 是于 1997 年制定的一套标准,GPG、PGP 等工具都实现了这套标准。
客户端方式安装
命令行方式
暂时没有整理
GPG相关命令
-
查看GPG 版本,验证是否安装过GPG
gpg --vserion
-
列出生成的key
gpg --list-keys
-
删除key
gpg --delete-secret-keys [your key]
gpg --delete-key [your key]
-
生成key
gpg --gen-key
-
上传key
gpg --keyserver hkp://keyserver.ubuntu.com --send-keys [your key]
-
验证是否上传成功
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys [your key]
发布jar 到中央仓库需依次执行
-
生成key
需要设置 name ,email,password(下面执行maven 命令上传jar 包是会用到这个命令) 2. #### 上传key 3. #### 验证是否上传成功
配置setting.xml
配置sonatype账号
<server>
<id>ossrh</id>
<username>your name</username>
<password>you key</password>
</server>
配置pom.xml
下面是pom文件必须有的
- groupId
- artifactId
- vserion
- url
- description
- url
- licenses
- scm
- plugins
maven-compiler-plugin
maven-javadoc-plugin
maven-source-plugin
maven-gpg-plugin
- snapshotRepository
- 其他相关依赖
参考完整pom
<?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.ksyun</groupId>
<artifactId>ksyun-java-sdk</artifactId>
<version>1.0.4</version>
<packaging>jar</packaging>
<name>KSYUN SDK for Java</name>
<description>
The KSYUN Web Services SDK for Java provides Java APIs
for building software on KSYUN' cost-effective, scalable, and reliable
infrastructure products. The KSYUN Java SDK allows developers to code
against APIs for all of KSYUN's infrastructure web services (KSC
S3, KSC KEC, KSC RDS etc).
</description>
<url>https://github.com/kingsoftcloud/sdk-java</url>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.ksyun.com/apache2.0</url>
</license>
</licenses>
<scm>
<url>https://github.com/OliverLiy/fast-sso</url>
<connection>https://github.com/OliverLiy/fast-sso.git</connection>
</scm>
<!-- 开发者信息 -->
<developers>
<developer>
<id>ksyun java sdk</id>
<name>Kingsoft Cloud</name>
<email>zhangxiao4@kingsoft.com</email>
<roles>
<role>Project Manager</role>
<role>Architect</role>
</roles>
<organization>com.ksyun</organization>
<organizationUrl>https://github.com/kingsoftcloud/sdk-java</organizationUrl>
<properties>
<dept>No</dept>
</properties>
<timezone>-5</timezone>
</developer>
</developers>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<skipTests>true</skipTests>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.12.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>sonatype-oss-release</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<!--发布到中央SNAPSHOT仓库插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
</configuration>
</plugin>
<!--配置生成Javadoc包-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<!-- jdk1.8要加上,1.7要去掉,否则会报错 -->
<additionalJOptions>
<additionalJOption>-Xdoclint:none</additionalJOption>
</additionalJOptions>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!--配置生成源码包-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!--gpg插件-->
<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>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
</project>
发布jar
mvn clean deploy
这一步会用到刚生产GPG 时设置的password
在 nexus 上发布包
执行maven 命令后 ,本地jar 会发到远端 nexus,如下图
1、查看刚上传的jar包,如果列表中没有等会再刷新 2、点击close后nexus 开始验证包的完整性,注意观察过程,如发现错误需要修正后重新上传
3、验证通过点release发布到中央仓库中,同样注意观察发布过程,如发现问题需修正后在发布
当前问题是该版本包已存在
4、 release发布成功后,剩下的就是nexus 管理员审核,审核通过后可以再maven中央仓库中查看