不開源的情況下上傳jar包至maven倉庫

之前有篇文章介紹如何在遠程倉庫中導(dǎo)入so:http://www.itdecent.cn/p/c65697f6bc36

文中提到上傳maven倉庫比較繁瑣且需要開源。最近在看到友盟統(tǒng)計在不開源的情況下也能用gradle遠程導(dǎo)入jar包,于是明確了的確有種方式可以不開源并上傳。

在具體了解怎么操作前,我猜想大致結(jié)構(gòu)應(yīng)該是上傳一個假的源碼框架,在其中引入真的jar包,最后一起打出maven上的jar包,也就是說通過引用jar的形式繞過需要開源的設(shè)定。結(jié)果證明了我太naive了

仔細學(xué)習(xí)友盟的上傳git和jar后,我發(fā)現(xiàn)自己反而一頭霧水了,因為不僅與我的猜想相去甚遠,而且上傳的東西和結(jié)果產(chǎn)出的jar根本牛頭不對馬嘴。首先maven對上傳的開源有比較明確的要求,需要一個git地址,pom文件定義打包。且倉庫中可以瀏覽的jar包都有個source包,而友盟的source卻是空的。綜合上述情況我明白了肯定有直接上傳jar包至maven的方式,而不是我之前認為必須要maven通過pom文件打包得出jar

通過廣泛的查閱資料,在官網(wǎng)的requirements后我找到之前我得出結(jié)論的佐證

If, for some reason (for example, license issue or it's a Scala project), you can not provide -sources.jar or -javadoc.jar , please make fake -sources.jar or -javadoc.jar with simple README inside to pass the checking.

翻譯一下就是如果因為某些原因比如許可問題或這是個Scala工程,使得你不能提供源碼包(source.jar)或JAVA文檔包(javadoc.jar),請生成一個假的只包含README的源碼包或JAVA文檔包來通過上傳檢查

bingo,官方明確的指出可以上傳不開源的jar,那么具體怎么操作呢?終于在官方文檔中找到了這一篇指導(dǎo),簡單來說就是生成jar包并簽名后和其他資源一起打成一個bundle.jar,最后通過上傳bundle.jar來發(fā)布出去。

來,讓我們重頭開始,讓上傳不再復(fù)雜?。?!

第一步 注冊帳號

上傳首先你要有個賬戶,這個賬戶就是Sonatype帳號,大膽的去注冊就好了。

注冊地址:https://issues.sonatype.org/secure/Signup!default.jspa

第二步 提交申請

提交申請獲取上傳資格

Issue 地址:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134

具體填寫很簡單,頁面上也有簡單的說明。因為maven對上傳有比較嚴格的審核,所以上傳前會有人工審核。審核的主要對象是groupId,一般為相應(yīng)的域名。出于安全的考慮,maven不希望你占用別人的域名來發(fā)布一些包以免使用者產(chǎn)生混淆。比如我使用com.google.pay去發(fā)布一個支付sdk,恐怕大多數(shù)人都會誤認為是官方發(fā)布的。所以審核員會針對groupId做一些限制,比如groupId是一個私有域名,審核員會comment你,希望你證明下你的所有權(quán),一般建議你使用域名相同的郵箱給他發(fā)一個郵件,或直接建議你使用com.github.{項目名} 作為你的groupId.如何選groupId,官網(wǎng)也有個簡單的視頻指導(dǎo),點開后有股濃濃的咖喱味哦~~~

提交以后需要等待審核,一般周期為1~2天,因為審核員在米國所以一般東八區(qū)時間晚上10點人家才會處理申請,所以白天申請的需要等到第二天。

第三步 打包并簽名

漫長的等待后,終于審核通過了,你得到了以下提示:

Configuration has been prepared, now you can:

Deploy snapshot artifacts into repository ?https://oss.sonatype.org/content/repositories/snapshots

?Deploy release artifacts into the staging repository https://oss.sonatype.org/service/local/staging/deploy/maven2

Promote staged artifacts into repository 'Releases'

Download snapshot and release artifacts from group https://oss.sonatype.org/content/groups/public

Download snapshot, release and staged artifacts from staging group https://oss.sonatype.org/content/groups/staging

please comment on this ticket when you promoted your first release, thanks

到這一步就萬事俱備,只欠jar包了。到目前為止的步驟和其他博客的并無區(qū)別,但是鑒于我們需要上傳的是非開源的jar。所以以下步驟比較特殊。

中間插一下簽名的說明先

GPG簽名

定義神馬的可以去百度下,這里我只簡單的說明,簽名作用是防止jar被篡改。

所以我們需要下載一個GPG的環(huán)境,具體使用可以百度之或參考阮大神的博客

http://www.ruanyifeng.com/blog/2013/07/gpg.html

配置環(huán)境并能運行g(shù)pg命令,生成自己的簽名并上傳成功后我們才能開始下一步。

打包

假設(shè)我們的groupId就叫com.example.zachary,artifact叫uploadmvn,版本為1.0.0。那么首先我們會有一個uploadmvn.jar,然后我們重命名為uploadmvn-1.0.0.jar,然后新建一個README文件,文件為空或隨便寫點什么都行,把README文件打成一個jar包,名稱為uploadmvn-1.0.0-sources.jar,同理生成uploadmvn-1.0.0-javadoc.jar

那么我們現(xiàn)在有如下三個包了

uploadmvn-1.0.0.jar

uploadmvn-1.0.0-sources.jar

uploadmvn-1.0.0-javadoc.jar

然后我們需要編輯一個pom文件

名稱為uploadmvn-1.0.0.pom:

<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>com.example.zachary</groupId>

<artifactId>uploadmvn</artifactId>

<version>1.0.0</version>

<packaging>jar</packaging>

<name>whatever</name>

<description>your description</description>

<url>your website url</url>

<licenses>

? ? ?<license>

? ? ? ? ?<name>your license,fake one will work too</name>

? ? ? ? ?<url>http://www.fake.is.ok.too</url>

? ? <license>

</licenses>

<scm>

<url>git@github.com:exampleproject/example-git.git</url>

<connection>scm:git:git@github.com:exampleproject/example-git.git</connection>

<developerConnection>scm:git:git@github.com:exampleproject/example-git.git</developerConnection>

</scm>

<develops>

<develop>

?<id>whatever id</id>

?<name>whatever name</name>

<organization>your web site</organization>

</develop>

</develops>

</project>

ps:純手打pom文件,拷貝過來簡書編輯器不識別,如果錯誤見諒

以上pom文件中需要著重填寫的是groupId,artifactId,version,不能有錯誤

其次是packaging要填jar,如果你上傳jar那就填aar。

最后scm節(jié)點中填寫一個git地址,和代碼沒關(guān)系也行,我填了一個空項目的地址。

完成這一步后我們有四個文件分別為:

uploadmvn-1.0.0.jar

uploadmvn-1.0.0.pom

uploadmvn-1.0.0-sources.jar

uploadmvn-1.0.0-javadoc.jar

然后依次運行g(shù)pg命令簽名這四個文件,以pom文件為例

gpg -ab uploadmvn-1.0.0.pom

然后會得到對應(yīng)的asc文件

最后文件列表為

uploadmvn-1.0.0.jar

uploadmvn-1.0.0.jar.asc

uploadmvn-1.0.0.pom

uploadmvn-1.0.0.pom.asc

uploadmvn-1.0.0-sources.jar

uploadmvn-1.0.0-sources.jar.asc

uploadmvn-1.0.0-javadoc.jar

uploadmvn-1.0.0-javadoc.jar.asc

接下來需要把八個文件打成一個jar,命令示例:

jar -cvf bundle.jar uploadmvn*

如果得到一個bundle.jar那就成功了?。?!

我們離最后的勝利只差一步了。

上傳

打開網(wǎng)址:https://oss.sonatype.org/#welcome

還記得之前注冊的Sonatype帳號么?這里需要使用這個帳號登錄。登錄成功后左側(cè)會有build promotion選項卡,下面有一個Staging Upload選項

點擊Staging Upload后,在Upload Mode后有個下拉選框,選擇Artifact bundle,然后select bundle,找到之前生成的bundle.jar,點擊上傳按鈕。上傳后會在上圖的Staging Repositories中有顯示。點擊Staging Repositories,在列表找到自己上傳的相應(yīng)條目,如果狀態(tài)是close那么表示你上傳成功,如果不是,列表下面有activity顯示有什么錯誤,解決后重新上傳就好了。如果狀態(tài)已經(jīng)是close,那么你需要選中自己對應(yīng)的條目點擊列表上方的release按鈕。由于是第一次上傳,所以當你release完畢后需要回到之前申請上傳資格的地方也就是提交Issue的頁面comment審核員你已經(jīng)release了,告訴他這個issue已經(jīng)完成了。等待一段時間后,你就可以在search.maven.org上找到自己上傳的jar了。

當看到自己jar已經(jīng)上傳到maven庫后,是不是成就感滿滿呢?以后別的開發(fā)者只需要在gradle一行代碼就能引用你的jar了

compile ?"com.example.zachary:uploadmvn:1.0.0"

過程較費時和繁瑣,耐心點就好.參考了比較多的資料,盡量列一下好了。有些東西概念都沒有足夠的篇幅去介紹,有興趣的可以看參考資料里的鏈接。在這里拜一下各位大神~~

參考資料

1.http://central.sonatype.org/pages/manual-staging-bundle-creation-and-deployment.html?官方的一個上傳bundle.jar的文檔

2.http://central.sonatype.org/pages/requirements.html?也是官方的一個上傳要求文檔,上傳前建議讀一下

3.http://www.trinea.cn/dev-tools/upload-java-jar-or-android-aar-to-maven-center-repository/? ? trinea的介紹比較詳細,圖片較多很直觀

4.http://my.oschina.net/huangyong/blog/226738?p=2&temp=1467012996079#blog-comments-list? 步驟清晰

5.http://www.ruanyifeng.com/blog/2013/07/gpg.html?阮一峰的GPG介紹,很詳細

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 太長不讀篇 在 issues tracker 上注冊 創(chuàng)建 issues 配置 build.gradle gpg ...
    lambeta閱讀 4,851評論 0 1
  • 之前IJPay Jar是上傳到JitPack,但是有很多同學(xué)反饋說Jar無法下載。為了響應(yīng)群眾的號召,這次需要向中...
    Javen205閱讀 1,510評論 0 1
  • 6月29日計劃 早晨6:00起床,6:20跑步。7:45送女兒上學(xué),8:00吃早餐,9:00到劉星公司取宣言冊,9...
    zengkai1198閱讀 136評論 0 0
  • 最初接觸小說的時候是二零零五年,開始接觸小說。尤其是校園文學(xué),看的一本小說是饒雪漫的《左耳》。至今想起吧啦被汽車壓...
    洛漾熙_0d2a閱讀 2,514評論 1 3

友情鏈接更多精彩內(nèi)容