需求背景
在日常項目開發(fā)過程中,一些公共模塊在不同的項目中被引用,此時如果對公共模塊進(jìn)行修改,那么需要修改好幾個項目,不利于后期維護(hù),此刻可以去搭建私有maven的方式去發(fā)布該模塊.
一.私有maven搭建
1這里我們需要下載nexus來部署maven服務(wù):
下載地址:https://www.sonatype.com/thanks/repo-oss?submissionGuid=bc68a73f-4cff-4a92-b4f2-7c0cefe09233
根據(jù)自己的需求去下載對應(yīng)的版本:
我這里是mac系統(tǒng) ,下載完成后解壓, 會有兩個文件夾:
選擇第一個文件夾,進(jìn)入bin目錄,并打開終端,執(zhí)行./nexus start 命令,運(yùn)行后截圖如下:
瀏覽器輸入localhost:8081.可以訪問到這個頁面就算成功了,
默認(rèn)賬號是admin 初始化密碼是在我們進(jìn)入主頁后,默認(rèn)在解壓目錄下生成
至此,我們的maven服務(wù)就是搭建成功了,是不是很簡單
登陸成功后會看到右側(cè)有一個列表,這里我們只關(guān)注截圖里maven倉庫,可以看到這里倉庫有三種類型
下面先了解這三種類型倉庫的區(qū)別:
- host
用于存儲module代碼,這里需要注意的地方是,我們配置發(fā)布module的倉庫地址,一定要是host類型的倉庫,如果是proxy類型和group類型,就會報405錯誤
2.proxy
用于配置第三方倉庫,比如我們的module里如果用到了rxjava, retrofit這些第三方,就可以新建一個proxy倉庫來指向mavenCenter倉庫地址和阿里的maven倉庫地址,這樣別人在依賴我們的項目時,能夠自動下載這些庫
3.group
組合類型倉庫,當(dāng)我們把項目代碼發(fā)布,并且配置好了proxy倉庫后,我們就需要用這個倉庫來關(guān)聯(lián)Host倉庫和proxy倉庫,我們對外提供的倉庫地址也是group倉庫地址,這一點一定要特別特別注意
創(chuàng)建倉庫
上面截圖是我們解壓完成之后,默認(rèn)生成的倉庫,我們可以直接使用這些倉庫, 如果不想用這些倉庫,可以自己創(chuàng)建倉庫,創(chuàng)建流程如下
按照順序操作,會出現(xiàn)一個頁面,這里type選擇file,
名字自己用公司名或者項目名命名即可,這一步的作用是創(chuàng)建存儲區(qū)域
接下來就是開始創(chuàng)建倉庫了,依然是在設(shè)置頁面
點擊之后會出現(xiàn)一大串列表,我們只要選擇maven類型倉庫就可以,這里我們選擇maven類型倉庫即可,因為我這里是上傳aar,所以我選擇host類型
點進(jìn)去之后出現(xiàn)創(chuàng)建頁面,這里名字我們自己填寫公司名或者項目名即可, 然后還有一個BlobStore選項,這里就選擇前面我們創(chuàng)建的就可以,創(chuàng)建倉庫的時候有一個VersionPolicy選項, 常用的有兩個選項
Release:發(fā)布版本的時候以版本號為唯一標(biāo)識,如果已經(jīng)部署相同版本的項目,則會提示報錯
Snapshot: 發(fā)布版本的時候可以發(fā)布相同版本的項目,依賴的時候會自動依賴最新上傳的
倉庫搭建好后,回到倉庫列表頁面,點擊copy按鈕即可獲取上傳maven地址, 至此我們就可以用這個鏈接,完成項目的發(fā)布
發(fā)布項目
apply plugin: 'maven'
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: MAVEN_REPO_RELEASE_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
version '1.0.4'
artifactId 'AndroidPaySDK'
groupId GROUP_ID
packaging TYPE
}
}
}
}
編譯項目之后,右側(cè)gradleTask列表就能找到upload命令,點擊即可上傳成功
后續(xù)可以在瀏覽器看到我們上傳的aar了
這里只是上傳我們的aar,如果aar里依賴了第三方庫 比如rxjava,就要配置第三方代理倉庫,常用的maven倉庫地址我們都給配齊:
...
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
maven { url 'https://jitpack.io' }
maven { url 'https://repo1.maven.org/maven2/' }
maven { url 'https://developer.huawei.com/repo/'}
...
配置好代理倉庫之后,接下就是創(chuàng)建group倉庫了,創(chuàng)建group倉庫之后同上,配置的時候把我們需要的倉庫移過去就可以了
倉庫使用
復(fù)制配置好的group倉庫地址, 在新項目里去引用就可以了