上传项目到Maven中央仓库

编者按

         笔者最近在github上开源了一个Excel格式文件解析工具 excel2javaBean , 应要求上传项目到Maven仓库。其中坎坷不表, 现记录上传过程以供未来查阅。


目录

一、 注册 Sonatype JIRA 用户并创建工单
二、 安装 GPG 并生成密钥
三、 配置项目pom.xml和本地Maven setting.xml
四、 部署、发布和查看

一、 注册 Sonatype JIRA 用户并创建工单

登陆Sonatype JIRA并注册用户

JIRA 用户名和密码后面(3.2)会用到

1.1 创建工单

创建工单

最终点击 Create 按钮创建工单

对于第四步,虽然在创建Maven项目时可以随意写Group Id,但最好使用真实拥有的域名或推荐的com.github.[github用户名]格式域名。

1.2 等待管理员回复

等待管理员回复

即使Group Id对应的域名属于你,也可能会质询,回复拥有即可。由于我确实没有申请域名guojy.com,所以选择变更。

变更域名并获得相关地址

二、 安装 GPG 并通过命令生成密钥

2.1 下载并安装GPG并验证命令可用 windows版下载链接

根据操作系统类型下载相应的GPG安装包

gpg --version

2.2 生成密钥并上传公钥到服务器

gpg --gen-key

弹出窗口要求输入的密语要记得, 后面(4.1)会用到

gpg --gen-key2
gpg --keyserver

三、 配置项目pom.xml和本地 Maven setting.xml

3.1 配置项目的pom.xml文件

    <!--这里以spring-cloud-gray为例-->
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <tag>master</tag>
        <url>git@github.com:SpringCloud/spring-cloud-gray.git</url>
        <connection>scm:git:git@github.com:SpringCloud/spring-cloud-gray.git</connection>
        <developerConnection>scm:git:git@github.com:SpringCloud/spring-cloud-gray.git</developerConnection>
    </scm>

    <developers>
        <developer>
            <name>saleson</name>
            <email>qlichunyu@163.com</email>
            <organization>Spring Cloud中国社区</organization>
        </developer>
    </developers>

    <profiles>
        <profile>
            <id>sonatype-oss-release</id>
            <build>
                <plugins>
                    <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>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.9.1</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>1.1</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>

            <distributionManagement>
                <snapshotRepository>
                    <!--对应setting.xml servers.server.id-->
                    <id>sonatype-nexus-snapshots</id>
                    <url>
                        https://oss.sonatype.org/content/repositories/snapshots
                    </url>
                </snapshotRepository>
                <repository>
                    <!--对应setting.xml servers.server.id-->
                    <id>sonatype-nexus-staging</id>
                    <url>
                        https://oss.sonatype.org/service/local/staging/deploy/maven2
                    </url>
                </repository>
            </distributionManagement>
        </profile>
    </profiles>

maven-gpg-plugin如果不易自动下载可以选择使用命令 mvn dependency:get -DrepoUrl=http://repo.maven.apache.org/maven2/ -Dartifact=org.apache.maven.plugins:maven-gpg-plugin:1.1 手动下载。

3.2 配置本地maven的setting.xml文件

  <servers>
    <server>
      <id>sonatype-nexus-snapshots</id>
      <username>JIRA 用户名</username>
      <password>JIRA 用户密码</password>
    </server>
    <server>
      <id>sonatype-nexus-staging</id>
      <username>JIRA 用户名</username>
      <password>JIRA 用户密码</password>
    </server>
  </servers>

四、 部署、发布、通知审批和查看

4.1 部署

mvn clean deploy -P -sonatype-oss-release -Darguments="gpg.passphrase=密语" -Dmaven.test.skip=true

命令执行的过程中会要求在命令行和弹出框中输入密语,输入即可;gpg会报warn,直接忽略;到deploy阶段,会上传不少文件,耐心等待即可。

4.2 发布

登陆nexus

nexus登陆地址,这里的用户名和密码和登陆jira的一样。

点击close后填写备注信息

release.JPG

4.3 通知审批

首次上传通知审批.JPG

收到回复后等待10分钟左右即可完成同步Maven中央库,同步到search.maven.org则需要2小时以上;这一步只在首次部署发布时进行,之后的部署发布只需完成到4.2即可到4.4查看。

4.4 查看

release完成后可以查看上传结果

在maven中央仓库中查看上传结果

在search.maven.org上查看上传结果

引用

1. 发布jar包到maven中央库

2. 将项目发布到 maven 中央仓库踩过的坑

3. GPG入门

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343