Android studio 發(fā)布公共類庫(kù)到服務(wù)器maven倉(cāng)庫(kù)

[TOC]

準(zhǔn)備

安裝準(zhǔn)備蠻多的谍婉,例如java環(huán)境什么的這里不多說(shuō),達(dá)到目標(biāo)就行

  • 客戶端準(zhǔn)備
    Android studio 1.3以上 本文使用 1.5.1
    Gradle 2.4 以上置鼻,本文使用 2.9

  • 服務(wù)端準(zhǔn)備

Git服務(wù)器,這里準(zhǔn)備的是 Gitlab 內(nèi)網(wǎng)服務(wù)器,用公共服務(wù)器也行
Maven服務(wù)器岁歉,本文準(zhǔn)備的是 Nexus 服務(wù)器
Android SDK Linux版本
Gradle 2.4以上,本文使用2.9

Nexus安裝

去官網(wǎng)下載安裝包后膝蜈,復(fù)制到 ~/opt 目錄锅移,執(zhí)行如下命令

sudo cp nexus-x.xx.x-xx-bundle.tar.gz /usr/local
cd /usr/local
sudo tar xvzf nexus-x.xx.x-xx-bundle.tar.gz
sudo ln -s nexus-x.xx.x-xx nexus

nexus oss官方建議將nexus-x.xx.x-xx安裝到/usr/local目錄下,并做個(gè)/usr/local/nexus鏈接指向nexus-x.xx.x-xx目錄饱搏,方便以后nexus oss版本升級(jí)

方便以后使用

  • $NEXUS_HOME環(huán)境變量指向/usr/local/nexus
  • 將sonatype-work遷移到其它指定路徑非剃,可以修改nexus-x.xx.x-xx/conf/nexus.properties配置文件中的nexus-work變量值

運(yùn)行 Nexus

nexus-x.xx.x-xx/bin/nexus start

配置服務(wù)端

配置帳號(hào)

git用戶租,Nexus用戶組
git帳戶推沸,Nexus帳戶

配置sonatype nexus oss

瀏覽器打開http://服務(wù)器地址:8081/nexus就可以看到nexus oss的控制面板

新建倉(cāng)庫(kù) android-releaseandroid-snapshots
建立調(diào)度權(quán)限 android 添加 新倉(cāng)庫(kù)的推送于管理權(quán)限
把用戶加入到調(diào)度權(quán)限中

詳細(xì)操作請(qǐng)查看 Nexus權(quán)限管理于調(diào)度任務(wù)

這個(gè)時(shí)候备绽,就有了可用的Android 倉(cāng)庫(kù)了

發(fā)布公共類庫(kù)到服務(wù)器Android倉(cāng)庫(kù)

創(chuàng)建插件腳本 nexus-pulish.gradle

apply plugin: 'maven'
apply plugin: 'signing'

def isReleaseBuild() {
  return VERSION_NAME.contains("SNAPSHOT") == false
}

def getReleaseRepositoryUrl() {
  return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL : "http://xxxx:9009/nexus/content/repositories/android-releases/"
}

def getSnapshotRepositoryUrl() {
  return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL : "http://xxxx:9009/nexus/content/repositories/android-snapshots/"
}

def getRepositoryUsername() {
  return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}
def getRepositoryPassword() {
  return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}

signing {
  required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives")}
  sign configurations.archives
}

afterEvaluate { project ->
  uploadArchives {
    repositories {
      mavenDeployer {
        pom.groupId = GROUP
        pom.artifactId = POM_ARTIFACT_ID
        pom.version = VERSION_NAME
        repository(url: getReleaseRepositoryUrl()) {
          authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
        }
        snapshotRepository(url: getSnapshotRepositoryUrl()) {
          authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
        }
      }
    }
  }
  task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    options {
      encoding "UTF-8"
      links "http://docs.oracle.com/javase/7/docs/api/"
      linksOffline "http://d.android.com/reference", "${android.sdkDirectory}/docs/reference"
    }
    exclude '**/BuildConfig.java'
    exclude '**/R.java'
  }
  task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
  }
  task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.sourceFiles
  }
  artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
    "${project.buildDir}/outputs/aar/${project.name}-release.aar"
  }
}

請(qǐng)修改其中的 getReleaseRepositoryUrl()getSnapshotRepositoryUrl() 指向你配置的 倉(cāng)庫(kù)地址

將腳本推送到公共git倉(cāng)庫(kù),獲取這個(gè)腳本的 raw 地址 http://......../master/.../nexus-pulish.gradle

module 設(shè)置

檢查構(gòu)建配置

build.gradle 設(shè)置為

apply plugin: 'com.android.library'

全局工程的 local.properties配置項(xiàng)指定的 sdk.dir ndk.dir 是否正確

檢查依賴庫(kù)

如果有動(dòng)態(tài)庫(kù) so鬓催,且不是生成的疯坤,必須將文件放到 {$module}/src/main/jniLibs

配置推送參數(shù)

使用時(shí)在需要推送的module的 build.gradle 最后增加

apply from [raw 地址]

并在對(duì)應(yīng) module 中修改或者創(chuàng)建文件 gradle.properties,內(nèi)容如下

# if GROUP chants SNAPSHOT this project will archive to snapshots which archive to releases not chants
GROUP=SNAPSHOT
# VERSION Name of this must be x.x.x
VERSION_NAME=0.0.1
# maven artifactID
POM_ARTIFACT_ID=com.package.name

# snapshot url
#SNAPSHOT_REPOSITORY_URL=

# release url
#RELEASE_REPOSITORY_URL=

# username
NEXUS_USERNAME=

# password
NEXUS_PASSWORD=

請(qǐng)?zhí)畛渑渲?br> GROUP
VERSION_NAME
POM_ARTIFACT_ID
NEXUS_USERNAME
NEXUS_PASSWORD

GROUP建議包名
VERSION_NAME 三段數(shù)字字母小寫POM_ARTIFACT_ID 庫(kù)的別名

使用Gradle推送

運(yùn)行

gradlew uploadArchives
# 只發(fā)布這個(gè)module
gradlew :moudleName:uploadArchives

或者在Android studio 的右側(cè) Gradle 菜單里深浮,找對(duì)應(yīng)的項(xiàng)目的taskuploadArchives
運(yùn)行這個(gè) uploadArchives任務(wù)

推送成功后压怠,日志會(huì)顯示成功

使用私有倉(cāng)庫(kù)

在需要使用的module的 build.gradle 中加入

dependencies {
 repositories {
 jcenter()
 maven{
 url 'http://...../your-release'
 }
 }
 compile 'GROUP:POM_ARTIFACT_ID:VERSION_NAME'
 //例如使用公告庫(kù),私有庫(kù)請(qǐng)查閱庫(kù)本身參數(shù)
 compile 'com.android.support:appcompat-v7:23.2.1'
}

這個(gè)格式來(lái)使用這個(gè)私有公共庫(kù)

gradle.properties 配置詳解

發(fā)布配置

字段 用途 備注
GROUP 發(fā)布組ID 一般寫主要包結(jié)構(gòu) com.package.name
VERSION_NAME 版本號(hào) 一般填寫0.0.1飞苇,用于區(qū)分版本
POM_ARTIFACT_ID 標(biāo)識(shí)ID 一般用工具名稱name
NEXUS_USERNAME 用戶名 Nexus管理員分配
NEXUS_PASSWORD 密碼 登陸后可自行修改
SNAPSHOT_REPOSITORY_URL 快照倉(cāng)庫(kù)配置 一般注釋不填寫
RELEASE_REPOSITORY_URL 發(fā)布倉(cāng)庫(kù)配置 一般注釋不填寫

快照發(fā)布

GROUP=SNAPSHOT

正式發(fā)布

GROUP=包結(jié)構(gòu)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末菌瘫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子布卡,更是在濱河造成了極大的恐慌雨让,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忿等,死亡現(xiàn)場(chǎng)離奇詭異栖忠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)贸街,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門庵寞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人薛匪,你說(shuō)我怎么就攤上這事捐川。” “怎么了逸尖?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵古沥,是天一觀的道長(zhǎng)瘸右。 經(jīng)常有香客問(wèn)我,道長(zhǎng)岩齿,這世上最難降的妖魔是什么太颤? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮盹沈,結(jié)果婚禮上龄章,老公的妹妹穿的比我還像新娘。我一直安慰自己襟诸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布基协。 她就那樣靜靜地躺著歌亲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪澜驮。 梳的紋絲不亂的頭發(fā)上陷揪,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音杂穷,去河邊找鬼悍缠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛耐量,可吹牛的內(nèi)容都是我干的飞蚓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼廊蜒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼趴拧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起山叮,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤著榴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后屁倔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脑又,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年锐借,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了问麸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钞翔,死狀恐怖口叙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗅战,我是刑警寧澤妄田,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布俺亮,位于F島的核電站,受9級(jí)特大地震影響疟呐,放射性物質(zhì)發(fā)生泄漏脚曾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一启具、第九天 我趴在偏房一處隱蔽的房頂上張望本讥。 院中可真熱鬧,春花似錦鲁冯、人聲如沸拷沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撞芍。三九已至,卻和暖如春跨扮,著一層夾襖步出監(jiān)牢的瞬間序无,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工衡创, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帝嗡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓璃氢,卻偏偏與公主長(zhǎng)得像哟玷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子一也,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,518評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理碗降,服務(wù)發(fā)現(xiàn),斷路器塘秦,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • 對(duì)于1932年的哈爾濱來(lái)說(shuō)讼渊,8月份這頁(yè)歷史,見(jiàn)不到夏日的明麗和甘爽尊剔。如同泡在水里的一塊木板爪幻,潮乎乎濕淥淥的,透出絲...
    馬風(fēng)閱讀 1,058評(píng)論 2 26
  • 幸福路人春風(fēng)20171115第164天 今天晚上讀父母規(guī)须误,女兒說(shuō)停停停挨稿,然后指著第一條說(shuō),你不是說(shuō)要多鼓勵(lì)贊美孩子...
    春風(fēng)7861閱讀 267評(píng)論 0 0
  • 就像我平時(shí)看著你一樣,此刻我知道你也在看著我祭椰,有趣時(shí)常就發(fā)生在我們身旁臭家。--詹漢城 伴隨著天昏地暗的天氣疲陕,風(fēng)呼呼地...
    蘇宇城閱讀 322評(píng)論 3 3