文档章节

记录一次提交开源JAR包到中央仓库的过程

my_juke
 my_juke
发布于 05/03 18:19
字数 904
阅读 116
收藏 0

编写开源工程

我这次要开源的mybatis.batch插件,用于简化批量提交。 代码地址:https://github.com/liuaixi200/mybatis-batch-parent.git

申请提交到中央仓库的用户账号

申请地址:https://issues.sonatype.org
申请完后,记住用户名和密码,该用户名与密码可以用来登陆:oss.sonatype.org。

创建issure

注意两点: 项目选 : Community Support - Open Source Project Repository Hosting (OSSRH) 类型选: New Project

如果有自己的域名:groupId可以用自己的域名 如果没有自己的域名: groupId只能用com.github.xxx 或者io.github.xx

配置RSA密钥

下载gpg,下载地址:https://www.gnupg.org/download/ 安装完后,通常会用到以下命令

查看版本:  gpg --version  

生成密钥:

gpg --full-gen-key
gpg (GnuPG) 2.2.15; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.

Real name: 用户名
Email address: 开发者邮箱
Comment: 111
You selected this USER-ID:
    "liuax (111) <liuax00@gmail.com>"

查看生成的密钥

D:\Program Files (x86)\GnuPG\bin>gpg --list-key
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
C:/Users/liuax01/AppData/Roaming/gnupg/pubring.kbx
--------------------------------------------------
pub   rsa2048 2019-05-03 [SC]
      XXXXXXXXXXXXXXX99AF5C965487C95B2525ED50
uid           [ultimate] liuax (111) <liuax00@gmail.com>
sub   rsa2048 2019-05-03 [E]

将key上传到服务器,最好以下3个都执行一遍,否则上传release包时,会报找不到pub key

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys XXXXXXXXXXXXXXX99AF5C965487C95B2525ED50
gpg --keyserver hkp://keys.gnupg.net:11371 --send-keys XXXXXXXXXXXXXXX99AF5C965487C95B2525ED50
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys XXXXXXXXXXXXXXX99AF5C965487C95B2525ED50

检测是否上传成功

gpg --keyserver hkp://keys.gnupg.net:11371 --recv-keys XXXXXXXXXXXXXXX99AF5C965487C95B2525ED50

配置pom.xml

添加name,description,url,licenses,developers,scm

 <name>mybatis.batch</name>
    <description>批量提交插件</description>
    <url>https://github.com/liuaixi200/mybatis-batch-parent</url>

    <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>liuax</name>
            <email>liuax00@gmail.com</email>
            <organization>liuaixi200</organization>
            <organizationUrl>https://github.com/liuaixi200</organizationUrl>
        </developer>
    </developers>

    <scm>
        <url>https://github.com/liuaixi200/mybatis-batch-parent.git</url>
    </scm>

添加 distributionManagement

    <distributionManagement>
        <snapshotRepository>
            <id>oss_sonatype</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>oss_sonatype</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

添加profiles,以下插件缺一不可

<profiles>
        <profile>
            <id>release</id>
            <properties>
                <gpg.executable>gpg</gpg.executable>
                <gpg.passphrase>12345678</gpg.passphrase>
                <gpg.executable>D:\Program Files (x86)\GnuPG\bin\gpg.exe</gpg.executable>
                <gpg.homedir>C:/Users/liuax01/AppData/Roaming/gnupg</gpg.homedir>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <version>2.8.2</version>
                        <executions>
                            <execution>
                                <id>default-deploy</id>
                                <phase>deploy</phase>
                                <goals>
                                    <goal>deploy</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <version>1.6.7</version>
                        <extensions>true</extensions>
                        <configuration>
                            <serverId>oss_sonatype</serverId>
                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                            <autoReleaseAfterClose>true</autoReleaseAfterClose>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <configuration>
                            <gpgArguments>
                                <gpgArgument>-Dgpg.passphrase=${gpg.passphrase}</gpgArgument>
                            </gpgArguments>
                        </configuration>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>

                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>3.0.1</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.9.1</version>
                        <configuration>
                            <aggregate>true</aggregate>
                            <charset>UTF-8</charset>
                            <encoding>UTF-8</encoding>
                            <docencoding>UTF-8</docencoding>
                            <additionalparam>-Xdoclint:none</additionalparam>
                        </configuration>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

setting中添加server

 <server>
      <id>oss_sonatype</id>
      <username>liuax</username>
      <password>wb!SSaM!gC3XXXX</password>
    </server>

需要上传时执行以下命令

mvn deploy -release

登陆oss.sonatype.org查看结果

回复issue 如果是第一次上传

© 著作权归作者所有

my_juke
粉丝 4
博文 34
码字总数 22261
作品 0
深圳
私信 提问
IntelliJ IDEA中Maven插件无法更新索引之解决办法

Maven的仓库、索引 中央仓库:目前来说,http://repo1.maven.org/maven2/ 是真正的中央仓库的地址,该地址内置在的源码中,其它地址包括著名的ibiblio.org,都是镜像。 索引:中央仓库带有索...

闪电
2016/12/02
547
0
为什么要使用maven 和 git

鉴于本吧多新人,新人又需要多交流才能进步,今天就给新人们讲讲git和maven的必要性,因为,他们的重要性,远远超过很多没用过的人的想象。 很多人应该用过svn cvs之类的代码版本管理工具,g...

KongFanhao
2016/01/06
130
0
maven学习笔记五(仓库搭建,私服配置)

实际项目中,我们往往都是多人开发,这个时候,假如一个项目有300多M.用的jar包有100多个.只要项目组来一个人就从中央仓库下载依赖的jar,这种下载一般都需要持续很久.而且中央仓库一般都是配置在...

吕兵阳
2015/10/02
5.2K
0
如何推送个人项目至Maven中央仓库

开篇 前段时间使用Gitee仓库搭建了一个Maven私有仓库,将一些开源包放到上面去,感觉使用起来还是不太方便,最近就折腾将这些包提交到Maven的中央仓库中。项目第一次提交Maven还是挺麻烦的,...

centychen
05/14
432
1
maven添加非官方jar包到本地库

在maven的使用过程中,免不了需要将我们自己开发的jar包添加到maven仓库,供其他项目调用,除了将jar提交到maven的中央仓库方法外,maven还提供了将本地jar添加到本地maven库的方法。 1、命令...

孟飞阳
2016/06/22
65
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis集群搭建

服务器资源 ip 账号 配置 操作系统 xxx.70 root/xxx 磁盘50G(/)+150G(/home)、内存16G、CPU 16core CentOS Linux release 7.2.1511 (Core) xxx.74 root/xxx 磁盘50G(/)+150G(/home)、......

jxlgzwh
3分钟前
0
0
avro

一、 ```我们已经接触过很多序列化框架(或者集成系统),比如protobuf、hessian、thrift等,它们各有优缺点以及各自的实用场景,Avro也是一个序列化框架,它的设计思想、编程模式都和thi...

hexiaoming123
5分钟前
0
0
QML TextInput的字体超出控件范围

本文链接:https://blog.csdn.net/chyuanrufeng/article/details/54691998 问题描述 :QML TextInput输入内容超过TextInput的大小 当输入过多的字符串时,会出现内容超过TextInput的大小,字...

shzwork
6分钟前
0
0
《Java 8 in Action》Chapter 10:用Optional取代null

1965年,英国一位名为Tony Hoare的计算机科学家在设计ALGOL W语言时提出了null引用的想法。ALGOL W是第一批在堆上分配记录的类型语言之一。Hoare选择null引用这种方式,“只是因为这种方法实...

HelloDeveloper
7分钟前
0
0
进击的 Java ,云原生时代的蜕变

作者| 易立 阿里云资深技术专家<br /> <br />导读:云原生时代的来临,与Java 开发者到底有什么联系?有人说,云原生压根不是为了 Java 存在的。然而,本文的作者却认为云原生时代,Java 依然...

阿里巴巴云原生
9分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部