發(fā)布jar包到maven中央倉庫(無個人域名)

發(fā)布jar包到maven中央倉庫(無個人域名)

一、簡介

1.1 概述

我們通常使用的Jar包漆际,大多都是從鏡像上拉取的志于,也有私人倉庫,也有直接從Maven中央倉庫拉取的装盯,無論從鏡像還是倉庫坷虑,發(fā)布到中央倉庫的jar包,都是可以直接拉取下來的埂奈。所以迄损,當(dāng)我們自己打包了一個jar包之后,打算開源出去裝逼的時候账磺,我們就可以將jar包發(fā)布到sonatype.org芹敌,這個地址看起來不是maven,但是發(fā)布上去之后垮抗,我們在mvnrepository.com和search.maven.org都可以看到自己的jar包了氏捞。

本文按照網(wǎng)上亂七八糟的方式上傳過jar包,經(jīng)過血與淚的洗禮冒版,總結(jié)出了一套最簡單實用的方式液茎。

1.2 本篇重點(diǎn)

本篇先介紹下如何用git的域名來發(fā)布自己的jar包,下一篇介紹下如何用自己的域名來發(fā)布jar包壤玫。

1.3 地址

工單管理地址https://issues.sonatype.org/secure/Dashboard.jspa

說明:注冊賬號豁护、創(chuàng)建和管理issue哼凯,Jar包的發(fā)布是以解決issue的方式起步的

Jar包上傳地址https://oss.sonatype.org/#welcome

說明:使用maven提交后的jar包先到這個庫中欲间,可以用maven命令上傳,也可以直接在界面上上傳断部。

二猎贴、開始上傳

2.1 創(chuàng)建工單

創(chuàng)建工單是必須的,也很簡單,在工單管理中提交下jar包相關(guān)信息即可她渴。

首先要注冊賬號达址,如果沒有賬號,需要先注冊一個趁耗,記住用戶名密碼沉唠,后邊要配置到setting.xml中。

點(diǎn)擊Craete,彈出如下窗口:


在這里插入圖片描述

必填項選擇:

Project:Community Support - Open Source Project Repository Hosting

Issue Type:New Project

Summary:JAR包名稱苛败,如:JpaMapper

Group Id:你懂得满葛,不用多說,如com.github.ffch,如果是個人域名罢屈,填寫個人的groupId嘀韧,如:cn.pomit

Project URL:項目站點(diǎn),如:https://github.com/ffch/jpa-mapper缠捌,如果有項目主頁锄贷,填寫項目主頁,如https://www.pomit.cn/jpa-mapper

SCM url:項目源碼倉庫曼月,如:https://github.com/ffch/jpa-mapper.git

其他內(nèi)容不用填寫谊却,默認(rèn)即可。

創(chuàng)建Issue后哑芹,Sonatype的工作人員審核處理因惭,一般一個工作日以內(nèi),當(dāng)Issue的Status變?yōu)镽ESOLVED后绩衷,就可以進(jìn)行下一步操作了蹦魔。

使用Group Id為com.github.ffch申請過程如下:

在這里插入圖片描述

2.2 配置Maven

2.2.1 配置setting.xml

setting.xml文件一般在當(dāng)前用戶文件夾的.m2文件夾下。

在servers中增加server配置

  <servers>
    <server>
      <id>sonatype-nexus-snapshots</id>
      <username>Sonatype 賬號</username>
      <password>Sonatype 密碼</password>
    </server>
    <server>
      <id>sonatype-nexus-staging</id>
      <username>Sonatype 賬號</username>
      <password>Sonatype 密碼</password>
    </server>
  </servers>

2.2.2 配置pom.xml

2.2.2.1 搜到的方法

網(wǎng)上的一般說要配置oss-parent咳燕,這樣好處就是很多東西可以省掉勿决。

如:

<parent>
    <groupId>org.sonatype.oss</groupId>
    <artifactId>oss-parent</artifactId>
    <version>7</version>
</parent>

再加上開發(fā)者信息:

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

<developers>
    <developer>
        <name>chenfufei</name>
        <email>fufeixiaoyu@163.com</email>
        <organization>chenfufei</organization>
        <url>https://github.com/ffch</url>
    </developer>
</developers>

<scm>
    <tag>master</tag>
    <url>git@github.com:ffch/jpa-mapper.git</url>
    <connection>scm:git:git@github.com:ffch/jpa-mapper.git</connection>
    <developerConnection>scm:git:git@github.com:ffch/jpa-mapper.git</developerConnection>
</scm>
2.2.2.2 我的方法

但是如果我們已經(jīng)配置了一個parent,可能就不想用這種方式了招盲,可以使用以下方式:

<?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>cn.pomit</groupId>
    <artifactId>jpa-mapper</artifactId>
    <version>2.0</version>
    <packaging>pom</packaging>

    <name>jpa-mapper</name>
    <description>jpa code for mybatis</description>
    <url>https://www.pomit.cn/jpa-mapper</url>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <mybatis.version>3.4.6</mybatis.version>
        <mybatis-spring.version>1.3.2</mybatis-spring.version>
        <mybatis-spring-boot.version>1.3.0</mybatis-spring-boot.version>
        <spring-boot.version>2.0.0.RELEASE</spring-boot.version>
        <jpa.version>1.0</jpa.version>
        <jpa-mapper.version>1.2.2</jpa-mapper.version>
    </properties>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>actable</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>chenfufei</name>
            <email>fufeixiaoyu@163.com</email>
            <organization>chenfufei</organization>
            <url>https://github.com/ffch</url>
        </developer>
    </developers>

    <scm>
        <tag>master</tag>
        <url>git@github.com:ffch/jpa-mapper.git</url>
        <connection>scm:git:git@github.com:ffch/jpa-mapper.git</connection>
        <developerConnection>scm:git:git@github.com:ffch/jpa-mapper.git</developerConnection>
    </scm>
    <distributionManagement>
        <snapshotRepository>
            <id>sonatype-nexus-snapshots</id>
            <name>Sonatype Nexus Snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>sonatype-nexus-staging</id>
            <name>Nexus Release Repository</name>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>javax.persistence</groupId>
                <artifactId>persistence-api</artifactId>
                <version>${jpa.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-autoconfigure</artifactId>
                <version>${mybatis-spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis-spring.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.pomit</groupId>
                <artifactId>jpa-mapper-spring-boot-autoconfigure</artifactId>
                <version>${jpa-mapper.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.pomit</groupId>
                <artifactId>jpa-mapper-spring-boot-starter</artifactId>
                <version>${jpa-mapper.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.pomit</groupId>
                <artifactId>jpa-mapper-core</artifactId>
                <version>${jpa-mapper.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <profiles>
        <profile>
            <id>sonatype-oss-release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>2.1.2</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>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <aggregate>true</aggregate>
                            <javadocExecutable>${JAVA_HOME}/bin/javadoc</javadocExecutable>
                        </configuration>
                    </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>
        </profile>
    </profiles>
    <modules>
        <module>jpa-mapper-spring-boot</module>
        <module>jpa-mapper-core</module>
    </modules>
</project>

2.3 配置gpg-key

如果是使用的windows低缩,可以下載gpg4win,地址:https://www.gpg4win.org/download.html曹货,安裝后在命令行中執(zhí)行

gpg --gen-key

生成咆繁,過程中需要填寫名字、郵箱等顶籽,其他步驟可以使用默認(rèn)值玩般,不過有個叫:Passphase的參數(shù)需要記住,這個相當(dāng)于是是密鑰的密碼礼饱,下一步發(fā)布過程中進(jìn)行簽名操作的時候會用到坏为。

命令執(zhí)行之后究驴,會提示輸入真實姓名和郵箱,之后提示輸入密碼匀伏。


在這里插入圖片描述

之后會得到pub,上圖中深色部分
將pub上傳到key驗證庫

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys EBD22379E4658EFC731753EC27039418A67D0C8F

2.4 上傳Jar包

使用maven命令上傳jar包:

mvn clean deploy -P sonatype-oss-release -Darguments="gpg.passphrase=密鑰密碼"

實際操作過程中洒忧,-Darguments="gpg.passphrase=密鑰密碼"不寫會提示輸入密碼,我這里寫了還是提示了够颠。

使用maven命令部署會更好一點(diǎn)熙侍,因為我用eclipse沒部署成功,提示出錯履磨,eclipse是這樣玩的:


在這里插入圖片描述

這個過程也是很讓人崩潰的核行,特別慢,而且上傳完成之后還是有很多問題蹬耘。下面介紹一種快捷上傳的方式芝雪。

2.5 快捷上傳jar包

使用maven命令上傳多個jar包時,sonatype會自動把項目分割成多個Repository综苔,這樣close的時候就會校驗失敗惩系,因為這個原因,上傳了n次如筛,不得不另辟蹊徑堡牡。

失敗情況如圖,不是asc文件沒有杨刨,而是在第二個Repository中晤柄,close的時候就失敗了:


在這里插入圖片描述

因此,我們不能用這種方式妖胀,我們可以在頁面上直接上傳:

先drop掉失敗記錄(個人強(qiáng)迫證)芥颈,點(diǎn)擊左側(cè)的staging-upload,選擇自己的pom文件和其他文件上傳

Select Artifact(s) for Upload按鈕點(diǎn)了選擇文件之后赚抡,要點(diǎn)Add Artifact按鈕將文件放置到Artifacts列表框中爬坑。
Description必填,但隨意涂臣。

如圖:

在這里插入圖片描述

三盾计、Jar入庫

經(jīng)過漫長的等待,jar包可能應(yīng)該已經(jīng)上傳到stagingRepositories了赁遗。

如圖所示署辉,我們可以在右上角的搜索框輸入關(guān)鍵字查找我們的jar包。多個jar包的上傳岩四,會出現(xiàn)多個Repository哭尝,點(diǎn)擊相應(yīng)的Repositories,可以查看內(nèi)容炫乓。

圖示:


在這里插入圖片描述

3.1 校驗Jar包

選擇列表中的Repositories刚夺,多個Repositories要同時選定献丑,此時的構(gòu)件狀態(tài)為open末捣,點(diǎn)擊上方的close–>Confirm侠姑。

在下邊的Activity選項卡中查看狀態(tài),當(dāng)狀態(tài)變成closed后箩做,執(zhí)行Release–>Confirm莽红,并在下邊的Activity選項卡中查看狀態(tài)。

成功后構(gòu)件自動刪除邦邦,一小段時間(約1-2個小時)后即可同步到maven的中央倉庫安吁。

下一篇介紹下如何用自己的域名來發(fā)布jar包。步驟類似燃辖,前面部分略有不同鬼店,需要配置其他東西。

四黔龟、 JpaMapper

JpaMapper官方地址:
https://www.pomit.cn/jpa-mapper/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妇智,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子氏身,更是在濱河造成了極大的恐慌巍棱,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛋欣,死亡現(xiàn)場離奇詭異航徙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)陷虎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門到踏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尚猿,你說我怎么就攤上這事夭禽。” “怎么了谊路?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵讹躯,是天一觀的道長。 經(jīng)常有香客問我缠劝,道長潮梯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任惨恭,我火速辦了婚禮秉馏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脱羡。我一直安慰自己萝究,他們只是感情好免都,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帆竹,像睡著了一般绕娘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上栽连,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天险领,我揣著相機(jī)與錄音,去河邊找鬼秒紧。 笑死绢陌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熔恢。 我是一名探鬼主播脐湾,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼叙淌!你這毒婦竟也來了秤掌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤凿菩,失蹤者是張志新(化名)和其女友劉穎机杜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衅谷,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡椒拗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了获黔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚀苛。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玷氏,靈堂內(nèi)的尸體忽然破棺而出堵未,到底是詐尸還是另有隱情,我是刑警寧澤盏触,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布渗蟹,位于F島的核電站,受9級特大地震影響赞辩,放射性物質(zhì)發(fā)生泄漏雌芽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一辨嗽、第九天 我趴在偏房一處隱蔽的房頂上張望世落。 院中可真熱鬧,春花似錦糟需、人聲如沸屉佳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽武花。三九已至圆凰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間髓堪,已是汗流浹背送朱。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工娘荡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留干旁,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓炮沐,卻偏偏與公主長得像争群,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子大年,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354