月度归档:2019年09月

发布您的Jar包到Central中央仓库

最近开源了自己写的银联在线网关支付SDK,并尝试将其发布到中央仓库。仅以此篇博客记录整个过程。

注册Sonatype帐号

[gt href=’https://issues.sonatype.org/secure/Signup!default.jspa’]注册Sonatype帐号[/gt]

注册逻辑非常简单跟注册QQ号差不多,这里过程不表。

创建问题

问题表单请如实填写

项目选择:Community Support – Open Source Project Repository Hosting (OSSRH)

问题类型:New Project

概要:X-UnionPay

描述:X-UnionPay–中国银联在线网关支付接口第三方SDK,旨在屏蔽底层逻辑提供一套简单的API方便调用。

Group Id:com.github.xuchengen

Project URL:https://github.com/Xuchengen/X-UnionPay

SCM url:https://github.com/Xuchengen/X-UnionPay.git

其它可填可不填。问题的审核大概需要一天的时间,审核期间还需验证Github仓库地址。

 

如上图所示,第一条评论需要我们在github上创建一个仓库进行身份验证。看到第二条评论基本可以确认我们可以上传自己的Jar包到Sonatype仓库。

配置Maven Setting.xml

<?xml version="1.0"encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <!-- 自己指定本地仓库路径 -->
    <localRepository>/Users/xuchengen/z_dev/apache/maven/repo</localRepository>

    <servers>
        <server>
            <id>to-central-maven</id>
            <username>Sonatype帐号</username>
            <password>Sonatype密码</password>
        </server>
    </servers>
	
    <mirrors>
    </mirrors>

    <profiles>
        <!-- 上传Jar包到中央库 -->
        <profile>
            <id>to-central-maven</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <gpg.executable>gpg</gpg.executable>
                <gpg.passphrase>GPG密码</gpg.passphrase>
            </properties>
        </profile>
    </profiles>
</settings>

配置项目pom.xml

[gt href=’https://github.com/Xuchengen/X-UnionPay/blob/master/pom.xml’]X-UnionPay项目POM配置参考[/gt]

<?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.github.xuchengen</groupId>
    <artifactId>X-UnionPay</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>X-UnionPay</name>
    <description>X-UnionPay——中国银联在线网关支付接口第三方SDK,旨在屏蔽底层逻辑提供一套简单的API方便调用。</description>
    <url>https://github.com/Xuchengen/X-UnionPay</url>

    <scm>
        <connection>scm:git:https://github.com/Xuchengen/X-UnionPay.git</connection>
        <developerConnection>scm:git:https://github.com/Xuchengen/X-UnionPay.git</developerConnection>
        <url>https://github.com/Xuchengen/X-UnionPay.git</url>
    </scm>

    <licenses>
        <license>
            <name>The Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>徐承恩</name>
            <email>xuchengen@gmail.com</email>
            <organization>github</organization>
            <organizationUrl>https://xuchengen.github.io/</organizationUrl>
        </developer>
    </developers>

    <properties>
        <jdk>1.7</jdk>
        <encoding>UTF-8</encoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.6.1</version>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>to-central-maven</id>
            <build>
                <plugins>
                    <!-- 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>
            <distributionManagement>
                <snapshotRepository>
                    <id>to-central-maven</id>
                    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
                </snapshotRepository>
                <repository>
                    <id>to-central-maven</id>
                    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
                </repository>
            </distributionManagement>
        </profile>
    </profiles>

    <build>
        <plugins>
            <!-- 编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${jdk}</source>
                    <target>${jdk}</target>
                    <encoding>${encoding}</encoding>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <!-- 源码插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Javadoc -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--自动发布Jar到Maven仓库-->
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>1.6.7</version>
                <extensions>true</extensions>
                <configuration>
                    <serverId>to-central-maven</serverId>
                    <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                    <autoReleaseAfterClose>true</autoReleaseAfterClose>
                </configuration>
            </plugin>
            <!-- 资源文件处理插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <encoding>${encoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

使用GPG

Mac系统安装gpg

brew install gpg

其它系统平台各自去探索。

生成key只需要填写姓名和邮箱即可其它保持默认。

gpg --gen-key

上传到服务器

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys CF21873A--上传到服务器
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys  CF21873A --查看是否上传整个

部署Jar包到中央仓库

执行maven命令

mvn clean deploy -P to-central-maven

不出意外的话大概两个小时就能同步你的jar包到中央仓库。

[gt href=’https://search.maven.org’]搜索你自己的Jar包是否已上传到仓库[/gt]