使用Nexus Repository搭建屬于自己公司的私有maven服務器
前言
在Android應用開發過程中,不同IDE對工程的依賴方式不一樣:
使用Eclipse開發時,項目之間的依賴關系是這樣的:一個主工程(project)可以依賴多個libproject、so、jar包,對jar包和so的依賴是直接將jar和so放在工程的libs文件夾下(老版本的ADT需要手動配置Build Path),對libproject的依賴呈現在工程的“project.properties”文件中。
使用Android Studio開發時,除了可以依賴module(對應Eclipse中的libproject)、jar和so,還可以依賴aar(aar和jar包不同之處在于可以將so和資源文件一起打包),as的依賴關系全部(jar、so、aar、libproject)在build.gradle文件中的android標簽中管理。
使用AS開發應用時,除了可以依賴本地的庫之外,還可以依賴網上(公有maven服務器、私有maven服務器、jcenter等),如果是依賴本地的,必須要將依賴的module和主工程放在一個project里面,這就導致了每個project都需要配置這些依賴關系,如果是公司內多個工程依賴同一個公司內部的控件,控件有更新時,同步非常麻煩,但公司內部的控件不可能部署到公有maven服務器上,所以有必要搭建一個局域網內的maven服務器,方便管理公司內部的公共庫。
maven私有服務器搭建
搭建maven私服使用得比較多的是Nexus,Nexus是基于maven倉庫管理的社區項目,主要的使用場景就是可以在局域網搭建一個maven私服,用來部署第三方公共構件或者作為遠程倉庫在該局域網的一個代理。
關于Nexus的介紹和配置很簡單,具體可以查看這里: Android 項目部署之Nexus私服搭建和應用 。
上傳庫到私服
上傳庫到私服有兩種方式,一種是庫中配置,配置完成后執行upload這個task,另外一種方式是直接上傳。下面分別對這兩種方式做介紹:
在庫中配置,步驟如下:
1. 在project下的gradle.properties文件中定義通用屬性,方便如果有多個庫需要部署時,不需要修改每一個庫中的配置:
#本地庫 URLMAVEN_URL= http://172.28.1.*:8081/nexus/content/repositories/thirdparty/ MAVEN_SNAPSHOT_URL = http://172.28.1.*:8081/nexus/content/repositories/thirdparty-snapshot/ #對應maven的groupId值 GROUP=common #登錄nexus oss的用戶名 NEXUS_USERNAME=admin #登錄nexus oss的密碼 NEXUS_PASSWORD=admin123 # groupid GROUP_ID = common # type TYPE = aar # description DESCRIPTION = dependences lib
2. 修改module對應的build.gradle文件,配置以誰的名義上傳這個庫,上傳到什么地方,這個庫叫什么名字,屬于哪個group,ID和version、description、packageing等信息
apply plugin: 'com.android.library' apply plugin: 'maven' android { compileSdkVersion 17 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 15 targetSdkVersion 17 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { jniLibs.srcDirs = ['libs'] } } lintOptions { abortOnError false } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } uploadArchives { configuration = configurations.archives repositories { mavenDeployer { snapshotRepository(url: MAVEN_SNAPSHOT_URL) { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) } repository(url: MAVEN_URL) { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) } pom.project { version '1.0.0' artifactId 'TestLibrary' groupId GROUP_ID packaging TYPE description DESCRIPTION } } } } artifacts { archives file('TestLibrary.aar') }
3. 打開Gradle projects(在AS的右邊欄),找到對應的module,展開,找到Tasks下面的upload標簽并雙擊,在Gradle Console標簽可以查看是否上傳成功。
直接上傳:直接上傳很簡單,直接按照下圖的箭頭操作即可,如果上傳aar還沒有研究過,有興趣的可以自己研究一下:
在項目中使用私有倉庫
在項目中使用私有倉庫的步驟如下:
1. 在project的build.gradle文件中指定私有倉庫的地址,like this:
2. 在需要依賴私有倉庫的build.gradle文件中設置依賴關系:
來自: http://zmywly8866.github.io/2016/01/05/android-private-maven-repository.html