現(xiàn)如今已經(jīng)不是以前單兵作戰(zhàn)時代,越來越多的需求,促使我們項目去實現(xiàn)動態(tài)組件化開發(fā)。
這個時候組件化發(fā)布共享就顯的尤為重要。
這篇文章我們就來講解下如何使用Maven進行組件化發(fā)布
在講解組件化發(fā)布之前,我們先來了解一些基礎(chǔ)概念
基礎(chǔ)概念:
1.POM
pom:全名Project Object Model
項目對象模型,用來描述當前maven
項目發(fā)布模塊的基礎(chǔ)信息
pom主要節(jié)點信息如下:
配置 | 描述 | 舉例('com.android.tools.build:gradle:4.1.1') |
---|---|---|
groupId |
組織 / 公司的名稱 | com.android.tools.build |
artifactId |
組件的名稱 | gradle |
version |
組件的版本 | 4.1.1 |
packaging |
打包的格式 | aar |
2.倉庫
我們在開發(fā)中經(jīng)常使用到第二/三方插件或者第二/三方庫,就是存儲在倉庫中的
2.1:倉庫種類:
-
本地倉庫 :存儲在本地設(shè)備中的倉庫以及遠程倉庫中下載保存的倉庫,統(tǒng)稱為本地倉庫
-
私有倉庫 :公司內(nèi)部倉庫,比如是有maven私服搭建的局域網(wǎng)倉庫
-
中央倉庫 :開源社區(qū)倉庫,我們平時使用的第三方插件或者類庫一般都存儲在中央倉庫,比如
Maven Central
,阿里的國內(nèi)鏡像庫等1.maven庫介紹.png
2.2:倉庫構(gòu)建順序:
- 1.在本地倉庫中查找對應的類庫,沒有找到
執(zhí)行2
- 2.按照
repositories
中聲明的倉庫順序,在私有倉庫和中央倉庫查找對應的類庫,找到則將類庫版本信息下載到本地倉庫,沒找到則執(zhí)行3
- 3.前面都沒找到對應的類庫或者類庫版本,則拋出異?!?code>沒找到對應的類庫’
倉庫執(zhí)行順序.awebp
2.3:倉庫聲明方式:
項目build.gradle:
buildscript {
repositories {
[Gradle 插件的倉庫]
}
}
allprojects {
repositories {
[項目中所有模塊依賴的倉庫]
}
}
模塊內(nèi)build.gradle:
repositories{
[當前模塊依賴的倉庫]
}
gradle支持的倉庫類型:
repositories{
maven { url '...' }
ivy { url '...' }
flatDir { dirs '...' }
}
常用的中央倉庫:
google() // https://dl.google.com/dl/android/maven2/
mavenCentral() // https://repo.maven.apache.org/maven2/
jCenter()
網(wǎng)絡(luò)不好的情況下,訪問上面的中央倉庫會有點慢:可以開考慮使用國內(nèi)鏡像代理
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
3.有了Release
版本為啥還需要SNAPSHOT
?
區(qū)別
:
- 1.Release版本每次升級都需要更新版本,而SNAPSHOT不需要更新版本,使用原版本即可
- 2.Release版本如果版本沒有更新不需要每次都去下載,除非本地倉庫被清除,而SNAPSHOT版本每次編譯都需要去中央倉庫更新版本信息
- 3.常規(guī)Release版本是發(fā)布上線的版本,SNAPSHOT是測試版本。
- 4.版本名:Release版本:1.0.0,SNAPSHOT版本:1.0.0-SNAPSHOT
使用場景
:
A和B共同開發(fā),如果A修改了代碼,
使用常規(guī)Release版本則需要每次都發(fā)布一個新版本,如果不小心忘記增加版本,B則無法收到更新后的版本,
造成代碼不同步,后期會出現(xiàn)不可預料的bug。
使用SNAPSHOT只要A發(fā)布了版本,B在每次編譯時就可以立即收到A的類庫更新信息,可以實時同步代碼。
SNAPSHOT以犧牲編譯時間換取代碼之間的立即可見度
,缺點就是在網(wǎng)絡(luò)較差的情況下代碼編譯時間可能常常比較慢。
如何發(fā)布組件:
1.發(fā)布到本地倉庫:
模塊級:build.gradle
plugins {
id 'groovy' // Groovy Language
// id 'org.jetbrains.kotlin.jvm' // Kotlin
id 'java-gradle-plugin' // Java Gradle Plugin
id 'maven'
}
...
uploadArchives {
repositories {
mavenDeployer {
repository(url:uri('D:/maven_local'))
pom.groupId = 'com.yuhb.upload'
pom.artifactId = 'upload'
pom.version = '1.0.1'
}
}
}
同步模塊后:點擊Gradle面板中對應模塊下Tasks:upload
里面的uploadArchives
任務
如果執(zhí)行成功:則會在對應的本地目錄下找到類庫信息:
2.搭建maven私服創(chuàng)建私有倉庫:
簡介
maven
私服其實就是在部門·局域網(wǎng)·中設(shè)置一個maven
倉庫,所有在局域網(wǎng)中的開發(fā)人員都可以使用該倉庫:
PS:私服中可以添加自己本地的倉庫,也可以代理中央倉庫
中的包。畢竟對于一些網(wǎng)絡(luò)比較差的環(huán)境,去中央倉庫里面獲取數(shù)據(jù)是一個很耗時的操作
優(yōu)點
1.節(jié)省自己的外部帶寬:
2.加速構(gòu)建過程
3.可以部署第三方構(gòu)件
4.提高穩(wěn)定性,增強控制
5.降低中央倉庫的負荷
maven私服優(yōu)勢.png
如何搭建Maven私服
1.去官網(wǎng)下載
maven私服啟動器 nexus
:
2.下載后,配置環(huán)境變量
后:
在命令行輸入:nexus /run
3.nexus啟動成功后:在瀏覽器中輸入:
http://localhost:8081/
- 啟動界面如下:
2.nexus界面.png
點擊右上角的sign in
按鈕:
輸入用戶名和密碼
:
用戶名和密碼系統(tǒng)會提示在哪個目錄下
4.登錄成功后:
- 點擊導航欄的設(shè)置按鈕-->repository進入倉庫列表
3.倉庫搭建.png
4倉庫.png
- 點擊
create Repository
創(chuàng)建一個新的本地局域網(wǎng)倉庫:
因為我們是為Android項目創(chuàng)建的maven倉庫選擇maven2:
這里有三個maven2類型倉庫:
*hosted*
:本地局域網(wǎng)私服,像官方倉庫一樣,提供本地私庫功能
*proxy*
:提供代理其他倉庫的功能,表示這個repository可以代理遠程倉庫,比如jcenter
google
等遠程中央倉庫
*group*
:組合多個倉庫為一個地址使用
這里我們選擇
hosted
倉庫即可,大家可以根據(jù)自己需求選取
1.輸入倉庫名稱
2.設(shè)置maven類型:
*release*
:表示是一個該倉庫存儲的是一個release版本的第三方庫
*snapshot*
:表示存儲的是一個不穩(wěn)定第三方庫,需要進程去私服或者中央倉庫拉數(shù)據(jù):
****class="hljs-name"id>
***class="hljs-name"url>
trueclass="hljs-name"enabled>
(always/ daliy/ interval/ never)class="hljs-name"updatePolicy>
class="hljs-name"snapshot>
class="hljs-name"repository>
class="hljs-name"repository>
updatePolicy
:表示更新的頻率:
`always`:每次都需要拉去 ` daliy`:表示每天需要拉取 ` interval`:按分鐘拉取 ` nerver`:和release版本一樣,不需要重復拉取
點擊確定后就創(chuàng)建的一個maven私服:
點擊該倉庫就可以看到對應的url,這個url就是我們私服的地址。需要在項目中引用:
經(jīng)過上面的步驟后,我們就搭建好了一個maven
私服,局域網(wǎng)內(nèi)
用戶都可以拉取使用
-
開發(fā)
+關(guān)注
關(guān)注
0文章
370瀏覽量
40844 -
maven
+關(guān)注
關(guān)注
0文章
30瀏覽量
3713 -
gradle
+關(guān)注
關(guān)注
0文章
26瀏覽量
719
發(fā)布評論請先 登錄
相關(guān)推薦
評論