maven私服搭建

一、什么是maven

Maven是基于POM(工程對象模型),通過一小段描述(pom.xml)來對項目的代碼、報告文件進管理的工具。

  • 構(gòu)建工具:通過簡單的命令,能夠完成清理、編譯、測試、打包、部署等一系列過程。
  • 依賴管理工具:項目依賴的第三方的開源類庫,都可以通過依賴的方式引入到項目中來。代替了原來需要首先下載第三方j(luò)ar,再加入到項目中的方式。從而更好的解決了合作開發(fā)中依賴增多、版本不一致、版本沖突、依賴臃腫等問題。
  • 項目信息管理工具:能夠管理項目描述、開發(fā)者列表、版本控制系統(tǒng)地址、許可證等一些比較零散的項目信息。除了直接的項目信息,通過Maven自動生成的站點,以及一些已有的插件,還能夠輕松獲得項目文檔、測試報告、靜態(tài)分析報告、源碼版本、日志報告等非常具有價值的項目信息。
二、maven倉庫體系結(jié)構(gòu)
三、maven優(yōu)勢
四、maven私服搭建

Nexus是私服的一種,maven私服搭建借助于它來實現(xiàn)。
https://help.sonatype.com/repomanager3/download

下載的最新版本nexus-3.19.1-01

啟動
? bin ./nexus start
Starting nexus
http://localhost:8081/ 進入

用戶名:admin
密碼:? sonatype-work/nexus3/ vim admin.password

創(chuàng)建maven倉庫

進去選擇maven2(hosted)類型即可

最終生成maven倉庫

image.png
五、實戰(zhàn)項目接入maven私服

1.主工程gradle配置

buildscript {
   //這里只是為gradle構(gòu)建引入maven
   repositories {
       google()
       jcenter()
       mavenCentral()
       //release
       maven {
           //配置私服地址
           url'http://localhost:8081/repository/stan_releases/'
           //配置私服賬號名、密碼
           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/'
           //配置私服賬號名、密碼
           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工程庫對應aar Java工程對應Jar
POM_PACKAGING=aar
#賬號、密碼
NEXUS_USERNAME=admin
NEXUS_PASSWORD=XXX

3.對應lib模塊gradle上傳腳本編寫

//引入maven插件
apply plugin: 'maven' //引入maven插件才會有uploadArchives配置
//變量定義
def pomName = this.getName() //當前工程名
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,查看對應lib模塊的gradle task會新增upload,雙擊uploadArchives就會將當前l(fā)ib模塊上傳到mave倉庫中。

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

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