一啥酱、什么是maven
Maven是基于POM(工程對(duì)象模型)爹凹,通過一小段描述(pom.xml)來對(duì)項(xiàng)目的代碼、報(bào)告文件進(jìn)管理的工具镶殷。
- 構(gòu)建工具:通過簡單的命令禾酱,能夠完成清理、編譯绘趋、測試宇植、打包、部署等一系列過程埋心。
- 依賴管理工具:項(xiàng)目依賴的第三方的開源類庫,都可以通過依賴的方式引入到項(xiàng)目中來忙上。代替了原來需要首先下載第三方j(luò)ar拷呆,再加入到項(xiàng)目中的方式。從而更好的解決了合作開發(fā)中依賴增多疫粥、版本不一致茬斧、版本沖突、依賴臃腫等問題梗逮。
- 項(xiàng)目信息管理工具:能夠管理項(xiàng)目描述项秉、開發(fā)者列表、版本控制系統(tǒng)地址慷彤、許可證等一些比較零散的項(xiàng)目信息娄蔼。除了直接的項(xiàng)目信息怖喻,通過Maven自動(dòng)生成的站點(diǎn),以及一些已有的插件岁诉,還能夠輕松獲得項(xiàng)目文檔锚沸、測試報(bào)告、靜態(tài)分析報(bào)告涕癣、源碼版本哗蜈、日志報(bào)告等非常具有價(jià)值的項(xiàng)目信息。
二坠韩、maven倉庫體系結(jié)構(gòu)
三距潘、maven優(yōu)勢
四、maven私服搭建
Nexus是私服的一種只搁,maven私服搭建借助于它來實(shí)現(xiàn)音比。
https://help.sonatype.com/repomanager3/download
下載的最新版本nexus-3.19.1-01
啟動(dòng)
? bin ./nexus start
Starting nexus
http://localhost:8081/ 進(jìn)入
用戶名:admin
密碼:? sonatype-work/nexus3/ vim admin.password
創(chuàng)建maven倉庫
進(jìn)去選擇maven2(hosted)類型即可
最終生成maven倉庫
五、實(shí)戰(zhàn)項(xiàng)目接入maven私服
1.主工程gradle配置
buildscript {
//這里只是為gradle構(gòu)建引入maven
repositories {
google()
jcenter()
mavenCentral()
//release
maven {
//配置私服地址
url'http://localhost:8081/repository/stan_releases/'
//配置私服賬號(hào)名须蜗、密碼
credentials{
username ‘a(chǎn)dmin'
password ‘XXX'
}
}
//snapshot
maven {
url'http://localhost:8081/repository/stan_snapshot/'
credentials{
username ‘a(chǎn)dmin'
password ‘XXX'
}
}
}
//java工程引入maven
allprojects {
repositories {
google()
jcenter()
//release
maven {
//配置私服地址
url'http://localhost:8081/#admin/repository/stan_releases/'
//配置私服賬號(hào)名硅确、密碼
credentials{
username 'admin'
password 'XXX'
}
}
//snapshot
maven {
url'http://localhost:8081/repository/stan_snapshot/'
credentials{
username 'admin'
password 'XXX'
}
}
}
}
2.gradle.properties變量定義
#倉庫地址
NEXUS_REPOSITORY_URL=http://localhost:8081/repository/stan_snapshots/
#上傳的maven倉庫的group組織名
POM_GROUPID=com.stan.android
#package類型 Android工程庫對(duì)應(yīng)aar Java工程對(duì)應(yīng)Jar
POM_PACKAGING=aar
#賬號(hào)、密碼
NEXUS_USERNAME=admin
NEXUS_PASSWORD=XXX
3.對(duì)應(yīng)lib模塊gradle上傳腳本編寫
//引入maven插件
apply plugin: 'maven' //引入maven插件才會(huì)有uploadArchives配置
//變量定義
def pomName = this.getName() //當(dāng)前工程名
def pomVersion = '1.0.0-SNAPSHOT'
def pomDescription = 'the audio library for all projects'
//上傳腳本編寫
uploadArchives {
repositories {
mavenDeployer {
repository(url: NEXUS_REPOSITORY_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project { //變量定義
name pomName
version pomVersion
description pomDescription
artifactId pomVersion
groupId POM_GROUPID
packaging POM_PACKAGING
}
}
}
}
最后sync下gradle明肮,查看對(duì)應(yīng)lib模塊的gradle task會(huì)新增upload菱农,雙擊uploadArchives就會(huì)將當(dāng)前l(fā)ib模塊上傳到mave倉庫中。