教你將自己的jar包發(fā)布到maven官方倉(cāng)庫(kù)(超詳細(xì)用愛(ài)發(fā)電版)

前言

最近重構(gòu)了一下自己的小玩意组橄,由于之前是存到第三方倉(cāng)庫(kù)中的jitpack.io烙丛,假如要使用自己的庫(kù)則需要先在pom.xml中添加第三方倉(cāng)庫(kù)后跳纳,才能在dependencies中添加自己的依賴(lài)疟暖,比較麻煩紊搪。

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

而且我遇到了一個(gè)問(wèn)題蜜葱,在添加了第三方倉(cāng)庫(kù)的時(shí)候,在構(gòu)建項(xiàng)目的時(shí)候耀石,會(huì)把springframework的包也會(huì)重新下載一遍牵囤,十分久= =不知如何解決,所以更加迫使我想把自己的包存放到官方倉(cāng)庫(kù)中滞伟。然后就去搜了一下揭鳞,第一頁(yè)里10篇文章有8篇是一摸一樣的,有一些直接復(fù)制的里面圖片都403了
image

然后就對(duì)著教程做梆奈,瘋狂出現(xiàn)奇奇怪怪的問(wèn)題野崇,然后就想起之前看到的一句話(huà)

教程里都不出現(xiàn)錯(cuò)誤的,順利的一匹

好久沒(méi)寫(xiě)文章了亩钟,所以就久違地寫(xiě)一篇文章來(lái)說(shuō)一說(shuō)吧乓梨。貫徹一下我的風(fēng)格,盡量寫(xiě)的詳細(xì)一點(diǎn)清酥。
但是扶镀,本人水平有限,對(duì)maven不是很熟悉焰轻,對(duì)于后續(xù)的pom.xml配置我也不是很懂為什么這么做臭觉,希望大家能教一下我
好,那就開(kāi)始吧鹦马。

步驟

  1. https://issues.sonatype.org注冊(cè)一個(gè)賬號(hào)
  2. 到上面的網(wǎng)站提交一個(gè)issue胧谈,等待處理
  3. 安裝gpg,(用于對(duì)jar進(jìn)行加密)上傳你的密鑰到服務(wù)器
  4. 修改maven的setting.xml
  5. 修改Pom.xml文件
  6. 使用maven打包你的項(xiàng)目
  7. https://oss.sonatype.org/處理你剛上傳的jar
  8. https://issues.sonatype.org找到你剛剛的issue荸频,關(guān)掉它
  9. 等待2小時(shí),然后就可以在https://search.maven.org/搜到你的依賴(lài)了
image

emmmmm確實(shí)是麻煩呢

1.注冊(cè)賬號(hào)

這個(gè)沒(méi)什么說(shuō)的就放個(gè)圖吧(這里的密碼要求麻煩的一匹

image

2.提交issue

當(dāng)你注冊(cè)完之后客冈,就可以登陸來(lái)到首頁(yè)旭从,跟著步驟走,提交你的issue

image

然后你可以查看你的issue,等待被處理和悦,由于我是在晚上近0點(diǎn)的時(shí)候提交的退疫,所以可能處理比較快(看別的博客說(shuō)是時(shí)差問(wèn)題,需要等工作人員上班的時(shí)候才會(huì)被處理掉

image

3.安裝gpg

gpg的話(huà)鸽素,可以到https://www.gpg4win.org/下載
安裝完之后就可以打開(kāi)你的cmd褒繁,輸入gpg,輸出下面的東西就安裝成功了

image

然后就可以創(chuàng)建你的key了(實(shí)在不知道怎么表述了
輸入你的realname(類(lèi)似于username吧)
輸入email
然后最后一部是讓你輸入passphrase馍忽,就是密碼了棒坏,記著別忘了

image

然后輸入完passphrase后會(huì)給你輸出一串key,那個(gè)長(zhǎng)長(zhǎng)的就是了遭笋,如果不小心關(guān)了可以鍵入gpg --list-keys輸出你的key

image

然后下一步就是將你的key發(fā)布到服務(wù)器(至于為什么需要這一步我就母雞了坝冕,有一些博文倒是沒(méi)看到這一步= =),可以輸入下面的命令

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 你的key

然后再輸入命令查看是否發(fā)布成功了
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 你的key

然后如果運(yùn)氣好的話(huà)你大概能成功,反正我是沒(méi)有成功了反正我是result no data

不成功的話(huà)可以往下看這里的瓦呼,如果成功的話(huà)就跳過(guò)這一步吧喂窟。在你安裝完gpg的時(shí)候,你會(huì)發(fā)現(xiàn)多了一個(gè)這樣的界面央串,大概是gpg的ui版吧磨澡,上面會(huì)有你剛剛創(chuàng)建的賬戶(hù)

image

右鍵點(diǎn)擊你的賬戶(hù),選擇紅色框框框住的選項(xiàng)质和,繼續(xù)就行了


image

image

然后大概就成了

4. 修改你的setting.xml

修改maven的setting.xml,在conf文件夾里面
注意:找到你的系統(tǒng)變量配置的maven的路徑稳摄,修改那里的setting.xml
因?yàn)槲倚薷牧薸dea的那個(gè),折騰了我一晚上

image

image

servers標(biāo)簽下添加以下代碼

    <server>
        <id>oss</id>
        <username>你在*步驟1*時(shí)候注冊(cè)的賬號(hào)</username>
        <password>你在*步驟1*時(shí)候注冊(cè)的賬號(hào)的密碼</password>
    </server>

5. 修改pom.xml

我把我自己的pom都發(fā)出來(lái)了侦另,dalao可以參考下哪些要的哪些不要的吧

據(jù)說(shuō)必須要添加以下的信息秩命,你可以根據(jù)你自己的信息修改

    <groupId>com.github.echisan</groupId>
    <artifactId>wpb4j</artifactId>
    <version>2.0</version>

    <name>wpb4j</name>
    <description>a simple java api for weibo picture bed</description>
    <url>https://github.com/echisan/wbp4j</url>

    <packaging>jar</packaging>

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

    <scm>
        <url>scm:git:git@github.com:echisan/wbp4j.git</url>
        <connection>scm:git:git@github.com:echisan/wbp4j.git</connection>
        <developerConnection>git@github.com:echisan/wbp4j.git</developerConnection>
        <tag>2.0</tag>
    </scm>

    <developers>
        <developer>
            <name>echisan</name>
        </developer>
    </developers>

然后添加一個(gè)profiles,學(xué)藝不精不是很清楚這個(gè)profile是干嘛用的悯许,但是看到網(wǎng)上的是把plugin放進(jìn)去了氯析,那我也直接復(fù)制粘貼了。担败。晚點(diǎn)惡補(bǔ)一下殿托,或者知道的可以說(shuō)一下干嘛用的

<profiles>
        <profile>
            <id>release</id> <!-- 這個(gè)id有用的霹菊,當(dāng)然也能自定義的吧 -->
            <build>
                <pluginManagement>
                <!-- 這個(gè)pluginManagement里的是我一把梭復(fù)制的, 各位dalao懂的就自己按實(shí)際整把= =這里我實(shí)在不懂 -->
                    <plugins>
                        <plugin>
                            <artifactId>maven-clean-plugin</artifactId>
                            <version>3.0.0</version>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-source-plugin</artifactId>
                            <version>3.0.1</version>
                            <executions>
                                <execution>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>jar-no-fork</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <version>3.7.0</version>
                        </plugin>
                        <plugin>
                            <artifactId>maven-surefire-plugin</artifactId>
                            <version>2.20.1</version>
                        </plugin>
                        <plugin>
                            <artifactId>maven-jar-plugin</artifactId>
                            <version>3.0.2</version>
                        </plugin>
                        <plugin>
                            <artifactId>maven-install-plugin</artifactId>
                            <version>2.5.2</version>
                        </plugin>
                        <plugin>
                            <artifactId>maven-deploy-plugin</artifactId>
                            <version>2.8.2</version>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <source>8</source>
                            <target>8</target>
                        </configuration>
                    </plugin>
                    <!-- Source -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin> <!-- 這個(gè)是必須要的支竹,不如提交到官方倉(cāng)庫(kù)的時(shí)候會(huì)不通過(guò) -->
                        <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> <!-- 這個(gè)是必須要的旋廷,我就是因?yàn)槁┝诉@個(gè),折騰了好久 -->
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>1.6</version>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <!-- 這個(gè)也是必須要的 以下兩個(gè)<id>代碼塊中的id要與 setting.xml中的id一致 -->
            <distributionManagement>
                <snapshotRepository>
                    <id>oss</id> 
                    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
                </snapshotRepository>
                <repository>
                    <id>oss</id>
                    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
                </repository>
            </distributionManagement>
        </profile>
    </profiles>

6. 打包你的應(yīng)用

到這一步貌似手續(xù)都準(zhǔn)備好了礼搁,可以打包你的應(yīng)用了饶碘。執(zhí)行以下命令
mvn clean deploy -P release -Dmaven.test.skip=true
然后等maven的一系列騷操作后,就會(huì)彈出一個(gè)框框讓你輸入passphrase馒吴,就是剛剛用gpg創(chuàng)建key的那個(gè)密碼扎运,輸入之后瑟曲,再等maven一頓騷操作后,看到這個(gè)就成啦~

image

如果沒(méi)有彈出框框輸入passphrase的話(huà)可以嘗試使用下面命令豪治,當(dāng)然這也是網(wǎng)上的方法了洞拨,盡管我輸入的是下面的代碼,還是彈出框框讓我輸入密碼了= =
mvn clean deploy -P release -Dmaven.test.skip=true -Dgpg.passphrase=你的passphrase

如果出現(xiàn)upload到oss錯(cuò)誤负拟,提示401的話(huà)烦衣,你再確定一下你修改的setting.xml是否正確,是否是你系統(tǒng)環(huán)境的那個(gè)maven掩浙。
至于有別的問(wèn)題的話(huà)我就不清楚了花吟,我就出現(xiàn)了上面這樣的錯(cuò)誤。

7. 去處理你剛剛deploy的jar包

登陸https://oss.sonatype.org/ 去處理你剛剛deploy的jar包

  1. 選擇taging Repositories
  2. 選擇你的項(xiàng)目
  3. close掉
image

然后系統(tǒng)會(huì)驗(yàn)證你的jar包信息涣脚,會(huì)執(zhí)行一系列的校驗(yàn)示辈,假如有錯(cuò)誤你可以點(diǎn)擊下面的錯(cuò)誤的位置,看看什么錯(cuò)誤再進(jìn)行處理

image

假如沒(méi)有任何問(wèn)題遣蚀,你再選中你的項(xiàng)目矾麻,點(diǎn)擊Release,然后這一步驟就結(jié)束了

image

8. 關(guān)掉你的issue

https://issues.sonatype.org 找到你剛剛的issue芭梯,給他留言险耀,讓他把issue close掉

image
image

image

9.0 等待2小時(shí)

經(jīng)過(guò)漫長(zhǎng)2小時(shí)的等待,打開(kāi)網(wǎng)站 https://search.maven.org/ 搜索你的gourpid就能搜索到啦

image

點(diǎn)擊那個(gè)latest Version玖喘,右手邊就能看到依賴(lài)信息啦~


image

然后迅速去體驗(yàn)在官方倉(cāng)庫(kù)導(dǎo)入依賴(lài)的快感吧(霧

image

更新

如果在下次需要deploy到官方倉(cāng)庫(kù)的時(shí)候甩牺,不需要再去提issue了,直接用上面的deploy命令累奈,然后重復(fù)第7個(gè)步驟就好了

參考感謝

非常感謝以下文章在當(dāng)初給予的幫助

如何把自己的Jar包上傳到 maven 官方倉(cāng)庫(kù)中贬派,Maven上傳圖文講解
發(fā)布Maven構(gòu)件到中央倉(cāng)庫(kù)
將 Smart 構(gòu)件發(fā)布到 Maven 中央倉(cāng)庫(kù)

這里打個(gè)小廣告,因?yàn)橐蟼鬟@個(gè)到官方倉(cāng)庫(kù)所以才有了這篇文章
這是一個(gè)使用微博圖床的java api澎媒,可以在自己的博客中使用~
https://github.com/echisan/wbp4j

使用起來(lái)也是挺方便的~

UploadRequest uploadRequest = new UploadRequestBuilder()
                .setAcount("weibo username/email", "password")
                .build();
        UploadResponse response = uploadRequest.upload(new File("path"));
        System.out.println(response.getResult());
        System.out.println(response.getMessage());
        System.out.println(response.getImageInfo());
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搞乏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子戒努,更是在濱河造成了極大的恐慌请敦,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件储玫,死亡現(xiàn)場(chǎng)離奇詭異侍筛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)撒穷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)匣椰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人端礼,你說(shuō)我怎么就攤上這事窝爪〕诔担” “怎么了齐媒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵蒲每,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我喻括,道長(zhǎng)邀杏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任唬血,我火速辦了婚禮望蜡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拷恨。我一直安慰自己脖律,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布腕侄。 她就那樣靜靜地躺著小泉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冕杠。 梳的紋絲不亂的頭發(fā)上微姊,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音分预,去河邊找鬼兢交。 笑死,一個(gè)胖子當(dāng)著我的面吹牛笼痹,可吹牛的內(nèi)容都是我干的配喳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼凳干,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晴裹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起纺座,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤息拜,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后净响,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體少欺,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年馋贤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赞别。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡配乓,死狀恐怖仿滔,靈堂內(nèi)的尸體忽然破棺而出惠毁,到底是詐尸還是另有隱情,我是刑警寧澤崎页,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布鞠绰,位于F島的核電站,受9級(jí)特大地震影響飒焦,放射性物質(zhì)發(fā)生泄漏蜈膨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一牺荠、第九天 我趴在偏房一處隱蔽的房頂上張望翁巍。 院中可真熱鬧,春花似錦休雌、人聲如沸灶壶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)驰凛。三九已至,卻和暖如春鱼蝉,著一層夾襖步出監(jiān)牢的瞬間洒嗤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工魁亦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渔隶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓洁奈,卻偏偏與公主長(zhǎng)得像间唉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子利术,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容