关于springboot:一键搞定发布自己Jar到Maven中央仓库

3次阅读

共计 5674 个字符,预计需要花费 15 分钟才能阅读完成。

做 java 开发那当然离不开 jar 包治理, 不知何时始终想想封装一个本人的 jar
而后公布到 maven 地方仓库给他人应用。

hhh 我感觉本人写一个 jar 包工具而后,被很多人应用是一件很牛,很高兴事件。

终于有了这个机会,和工夫。SpringBoot stater进去了 基于场景启动器你能够轻松定义本人的 stater 组件,而后甚至,能够公布到 maven 仓库。供大家应用。

我总结,写了一个作为我工作多年程序员,本人工具类库,stater。

Github 地址

基于它, 你能够轻松开发 SpringBoot WEB API, 提高效率。不在去关怀一些繁琐。反复工作,而是把重点聚焦到业务。

回到正题,这篇文章基于我这个,stater讲一下。如何把本人定义 stater 公布到 maven 地方仓库。

注册 sonatype 账号

进入 issues.sonatype.org 注册本人的账号,基于这个平台,疾速公布到 maven 仓库

注册实现后记住,账号密码,前面公布须要应用受权

创立本人的 maven 我的项目工单

注册实现后咱们创立本人,公布的 maven 我的项目, 点击新建

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

问题类型抉择:New Project

* 的是必填项,其余留空或者放弃默认即可,而后新建工单期待管理员审核

我的项目地址填一个你的我的项目的 Github 仓库地址。这里还是强调一下组 id 的填写,组 id 须要依据你本人的域名或者开源仓库地址来填。

前面在问题 - 我的报告中能够追踪 issue 的审核状况

期待管理员审核。审核实现,管理员会在上面提醒你让你验证这个域名是你的或者证实 gitee 或者 github 空间是你的

敞开 maven 工单我的项目

maven 工单我的项目审核通过后,会有邮件揭示。

新建胜利 issue 后须要期待 Sonatype 的工作人员进行审核,审核工夫大概几分钟左右(我过后 5min 貌似有人几小时的 ….),审核通过后 issue 的 Status 会转变为 Resolved,此时你就能够进行下一步操作了

你点击问题 — 找到你本人新建的我的项目

而后点击 Respond 按钮开启工单,让管理员去验证。

期待验证实现,管理员就会接着回复你验证胜利,这就阐明你的工单通过了,能够上传我的项目了

如果是用域名,则管理员会让你给你的域名增加一个 TXT 解析,而后他来验证:

没问题,这个时候能够敞开问题

我的项目配置

maven 配置

在你 maven 配置文件中配置你注册 issues.sonatype.org 账号密码

在 maven 的 conf 文件夹下settings.xml 文件的 servers 节点配置如下

 <server>
      <id>snapshots</id>
      <username>kenx</username>
      <password>xxxx</password>
    </server>
    <server>
      <id>releases</id>
      <username>kenx</username>
      <password>xxxx</password>
    </server>
    <server>
      <id>ossrh</id>
      <username>kenx</username>
      <password>xxx</password>
    </server>

秘钥配置

应用 gpg 生成秘钥

上传我的项目须要秘钥签名认证。本地须要生成明码。并且把公钥上传服务。

生成秘钥

gpg --gen-key

运行后 gpg 要求你抉择加密算法,过期工夫等等,这些间接抉择默认值即可。通过比照发现,gpg 2.0 以上的版本运行 gpg –gen-key 命令 会跳过这些步骤。

之后 gpg 要求你输出姓名,邮箱以及要害的 Passphrase(这个明码要本人记住,前面有用),顺次输出即可。而后 gpg 为你生成了一对秘钥。

查看秘钥

gpg --list-keys

在 pub 字段上面有一个十六进制数,那就是这个秘钥的 ID

而后咱们要把这个秘钥上传至公钥服务器,应用如下命令:

gpg --keyserver keyserver.ubuntu.com --send-keys 秘钥 ID

验证是否胜利地上传到了服务器:

gpg --keyserver keyserver.ubuntu.com --recv-keys 秘钥 ID

如果两条命令执行输入后果都如下阐明胜利:

这样,就实现了秘钥的配置了。

批改我的项目 pom 配置

接下来咱们须要配置咱们我的项目中 pom 文件,

<groupId>cn.soboys</groupId>
    <artifactId>rest-api-spring-boot-starter</artifactId>
    <version>1.3.0</version>
    <packaging>jar</packaging>
    <name>rest-api-spring-boot-starter</name>
    <description>SpringBoot Easy Fast Rest WEB 进步 SpringBoot Web 开发工作效率 RestFull API 应用 全局谬误拦挡,参数校验, 谬误国际化 , 自定义谬误响应 , 业务异样断言 ,Redis 工具库应用 ,RestTemplate 申请工具 , 日志应用 , 集成 mybatisPlus 一键代码生成 </description>
    <url>https://github.com/coder-amiao/rest-api-spring-boot-starter</url>

    <!-- 我的项目设定 -->
    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <gpg.passphrase>1234qwer</gpg.passphrase>
        <gpg.keyname>E933FBC878FB2EC0900A2ABAF79C3CD9E9E6A8EF</gpg.keyname>
        <gpg.homedir>/Users/xiangyong/.gnupg</gpg.homedir>
    </properties>



    <!-- 许可证信息,这里是 Apache 2.0 的许可证,大家依据理论状况批改 -->
    <licenses>
        <license>
            <name>The Apache Software License, Version2.0</name>
            <url>https://www.apache.org/licenses/</url>
            <distribution>repo</distribution>
        </license>
    </licenses>


    <!--   开发人员信息         -->
    <developers>
        <developer>
            <name> 三时 </name>
            <email>xymarcus@163.com</email>
        </developer>
    </developers>

    <!--   我的项目仓库信息         -->
    <scm>
        <connection>scm:git:https://github.com/zw201913/jtile38.git</connection>
        <developerConnection>https://github.com/coder-amiao/rest-api-spring-boot-starter</developerConnection>
        <url>https://github.com/coder-amiao/rest-api-spring-boot-starter.git</url>
        <tag>v${project.version}</tag>
    </scm>

    <!-- 地方仓库地址配置,不须要批改 -->
    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>

        <repository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- Source -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <phase>package</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>2.10.4</version>
                <configuration>
                    <additionalJOptions>
                        <additionalJOption>-Xdoclint:none</additionalJOption>
                    </additionalJOptions>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- GPG -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>1.6</version>
                <configuration>
                    <gpgArguments>
                        <arg>--pinentry-mode</arg>
                        <arg>loopback</arg>
                    </gpgArguments>
                </configuration>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

留神配置的groupId, 必须和你之前创立的 maven 我的项目工单保持一致

pom.xml 中必须包含:name、description、url、licenses、developers、scm 等根本信息,应用了 Maven 的 profile 性能,只有在 release 的时候,创立源码包、文档包、应用 GPG 进行数字签名。

此外,snapshotRepository 与 repository 中的 id 肯定要与 setting.xml 中 server 的 id 保持一致。

如果是多模块我的项目的话,只须要在父 pom.xml 中申明这些,子 pom.xml 中只须要批改相应的一些信息,如 name 标签。

我的项目公布

接下来你能够应用 deploy 公布我的项目

或者命令

mvn clean deploy

公布我的项目到地方仓库

下面的步骤只是把我的项目传到了 Sonatype 上了,还没有公布进来。

进入 s01.oss.sonatype.org,登录,账号是之前注册账号用户名和明码

点击旁边的 Staging Repositories 即可看到咱们公布的我的项目。

勾选我的项目,点击 close 按钮,开始进行我的项目校验。

再点击上面的 active 标签能够查看 close 的进度:

显示 All rules passed: Central Sync Requirement 就阐明校验通过,能够公布了。

如果过程正按钮是灰色, 或者不能点击,反复刷新期待就行(有可能是网络等其余起因)。而后反复下面步骤。即可

再点击下面的 release 按钮即可公布到地方仓库了。

实现后,大概过个 2 个小时,你就能够在 search.maven.org 找到你的公布的我的项目了!

总结概括

当前公布我的项目,如果 groupId 不变的话,咱们就不须要再去申请工单了。

间接反复上述的二、三、四步中的局部关键步骤即可。

上述 settings.xml 曾经配置了servers,

就不必再次配置了,即第二步配置 settings.xml 能够省略了。秘钥也曾经生成过了,也不须要再次生成了,即第三步的秘钥生成也不须要了。不过如果更换了电脑,那就要重新配置 settings.xml 并从新生成并上传秘钥了。

关注公众号,程序员三时 继续输入优质内容 心愿给你带来一点启发和帮忙

正文完
 0