maven发布jar 到中央仓库

201 阅读3分钟

发包流程

image.png

注册账号

参考:blog.csdn.net/lovexiaotao…

安装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

image.png

  • 删除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 到中央仓库需依次执行

  1. 生成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,如下图

image.png

1、查看刚上传的jar包,如果列表中没有等会再刷新 2、点击close后nexus 开始验证包的完整性,注意观察过程,如发现错误需要修正后重新上传

image.png

image.png

3、验证通过点release发布到中央仓库中,同样注意观察发布过程,如发现问题需修正后在发布

image.png

image.png 当前问题是该版本包已存在

4、 release发布成功后,剩下的就是nexus 管理员审核,审核通过后可以再maven中央仓库中查看