自從公司使用 Maven 倉庫管理代碼後,一直想着有一個本身的代碼倉庫。雖然寫的代碼很少,可是不影響 Get 一項新技能。java
因爲本人是作 Android 開發,因而經過集成 Maven 的 Gradle 插件,生成對應的 aar
和 jar
庫。android
在 Module 的 build.gradle 中,集成配置以下: 、git
// 使用 Maven 插件
apply plugin: 'maven'
// 遠程庫名稱一般由三部分構成 ,groupId:artifactId:version
// 定義 group
group = 'com.flueky'
// 定義 version
version = '1.0.0' // 指定版本
// artifactId 默認使用 module name
// 以上兩個配置也能夠在下面的 deployer 中定義
// 下面定義三種不一樣的 maven 倉庫地址
// 1. 計算機中,用戶目錄下
def localMavenRepo = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath
// 2. 工程目錄下 等同 uri('../repository')
def projectMavenRepo = 'file://' + rootDir.getAbsolutePath() + '/repository'
// 3. 自建的 Maven 私服上
def nexusMavenRepo = 'http://127.0.0.1:9000/repository/android/'
// 下面是 Maven 私服的用戶名和密碼,上傳時須要
def nexusUserName = 'admin'
def nexusPassword = 'admin123'
uploadArchives {
repositories.mavenDeployer {
// 指定導出到的倉庫地址,三個任選一個
repository(url: localMavenRepo)
repository(url: projectMavenRepo)
repository(url: nexusMavenRepo) {
// 須要受權用戶名和密碼
authentication(userName: nexusUserName, password: nexusPassword)
}
// 下面三個定義的常量能夠複寫上面已定義的值
pom.groupId = "com.flueky"// 惟一標識(一般爲模塊包名,也能夠任意)
pom.artifactId = "maven-test" // 項目名稱(一般爲類庫模塊名稱,也能夠任意)
pom.version = "1.0.0" // 版本號
}
}
複製代碼
配置好上述代碼後,生成 aar
或 jar
是由 Module 類型決定。github
// 生成 aar
apply plugin: 'com.android.library'
// 生成 jar
apply plugin: 'java'
複製代碼
已本地私服爲例,最終導出的遠程庫結構以下:服務器
配置完成後,便可在 Gradle 任務中查看。app
點擊 uploadArchives
便可完成導出。以後在對應的目錄下查看。maven
針對前面配置的三種倉庫地址,使用時須要分別做配置。gradle
allprojects {
repositories {
// 本地倉庫
mavenLocal()
// 本地服務器
maven {
// 若是 nexus 私服具有匿名訪問權限,無須配置用戶名密碼,
// 具有上傳權限的用戶名和密碼一般不開放使用。
credentials {
username "flueky"
password "123456"
}
url 'http://127.0.0.1:9000/repository/android/'
}
// 工程目錄倉庫
maven { url 'file://' + rootDir.getAbsolutePath() + '/repository/' }
}
}
複製代碼
最後添加依賴。ui
dependencies {
implementation 'com.flueky:maven-test:1.0.0'
implementation 'com.flueky:lib-test:1.0.0'
}
複製代碼
最後,如何搭建 Maven 私服,沒作介紹,主要是我也才上手,搭建私服,推薦使用 nexus 。url
以爲有用?那打賞一個唄。去打賞