本文介绍通过maven内部服务器共享android库,即共享aar包的方法。
目录
1. android本地仓库说明
2. 创建本地仓库
3. 共享android公共库
4. 引用android公共库
1. android本地仓库说明
本文将介绍如何将(通过gradle构建的)android公共库通过nexus共享到服务器上,然后其他客户端就可以轻松的引用到该android公共库。
涉及到的内容可以分为三个部分:
第一部分:创建本地仓库。即,在nexus创建仓库。
第二部分:共享android公共库。即,将android公共库共享到nexus本地仓库中。
第三部分:引用android公共库。即,使用"共享到nexus本地仓库中的android公共库"。
2. 创建本地仓库
下面介绍在nexus中创建本地仓库的方法。
第1步 新建Hosted Repository
在Repositories中点击"Add",选择"Hosted Repository"。 如下图所示
第2步 编辑"新建的Hosted Repository"
选择新建的"Hosted Repository",此时它的名称是"New Hosted Repository"。选择它,然后点击"Configuration"。在Configuration中,只需要进行以下几项设置;
(1) Repository ID: 这是可以随意定义,只要不和已有的仓库ID重复即可。为了增加可读性,建议根据共享的android库的名字来命名。
(2) Repository Name: 这个也是可以随意定义的。建议根据共享库的名字来命名。
(3) Povoder: 选择"Maven2"即可。
(4) Repository Policy: 选择"release"即可。
(5) Deployment Policy: 选择"Allow Redeploy(允许部署)"。
除了上面的几项之外,其他的不需要设置;然后,点击"Save"。
第3步 查看"新建的Hosted Repository"
点击"Save"之后,新建的"Hosted Repository"的名称就变成上面设置的"Repository ID的值"。点击该仓库,此时该仓库有"Repository Path"和"Default Local Storage Location"等值。
3. 共享android公共库
下面介绍如何"将android公共库共享到nexus本地仓库中"。
前面已经创建好了WheelView本地仓库,下面介绍如何将WheelView公共库到本地仓库。本地使用的WheelView公共库已共享到github上,点击查看android共享库的源码,这份源码也是本文的示例源码。
下面介绍"对于用户已有的android库"如何修改,从而使它能被共享到nexus本地仓库。这里仅仅介绍通过gradle自动构建的android库,对于通过ant或者maven构建的工程,这里不予介绍。
第1步 编辑android库的build.gradle
编译android公共库的build.gradle,添加以下内容:
apply plugin: 'maven'
def isReleaseBuild() {
return VERSION_NAME.contains("SNAPSHOT") == false
}
def getRepositoryUsername() {
return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}
def getRepositoryPassword() {
return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME
repository(url: RELEASE_REPOSITORY_URL) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
snapshotRepository(url: SNAPSHOT_REPOSITORY_URL) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
}
}
}
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
}
说明:直接将该内容添加到build.gradle的末尾即可,不需要对上面的内容进行额外的修改!
第2步 编辑gradle.properties
编辑andriod公共库中的gradle.properties,添加以下内容。如果没有gradle.properties,则新建该文件。
## GROUP的值是自定义的。它表示群组;若要将该库发布的maven中,则它是库在maven中的groupId值。
GROUP=cn.skw.widget
## VERSION_NAME的值是自定义。它表示版本号;若要将该库发布的maven中,则它是库在maven中的版本号。
VERSION_NAME=1.0
## POM_ARTIFACT_ID的值是自定义。它表示artifactId;若要将该库发布的maven中,则它是库在maven中的artifactId。
POM_ARTIFACT_ID=SelfWheelView
## 指定值。SNAPSHOT_REPOSITORY_URL是"库在nexus中的Repository Path的值"
SNAPSHOT_REPOSITORY_URL=http://127.0.0.1:8081/nexus/content/repositories/WheelView
## 指定值。RELEASE_REPOSITORY_URL是"库在nexus中Configuration栏的Default Local Storage Location的值"
RELEASE_REPOSITORY_URL=file:/home/project/skywang/opt/nexus/sonatype-work/nexus/storage/WheelView
## 指定值。nexus的用户名
NEXUS_USERNAME=admin
## 指定值。nexus的密码
NEXUS_PASSWORD=admin123
说明:
(1) GROUP: 它的值是自定义的,建议取包名。
(2) VERSION_NAME: 它的值是自定义的,建议取库的版本号。
(3) POM_ARTIFACT_ID: 它的值是自定义的,建议取库的名称。
(4) SNAPSHOT_REPOSITORY_URL: 它必须是nexus中Repository Path的值。
(5) RELEASE_REPOSITORY_URL: 它必须是nexus中库的Configuration栏目中Default Local Storage Location的值。
(6) NEXUS_USERNAME: 它必须是nexus的用户名。
(7) NEXUS_PASSWORD: 它必须是nexus的密码。
第3步 共享android库
在android库下面运行gradle uploadArchives
来共享库到nexus中。该指令正常运行的界面如下所示。
再回到nexus中,点击仓库的"Browse Storage",会发现里面有aar文件。
这表示android公共库已被共享到nexus中!
4. 引用android公共库
下面介绍在其他的android工程中引用"上面共享到nexus中android公共库"的方法。
使用nexus中的android库,只需要在build.gradle中添加以下内容即可。
repositories {
maven {
// 本地服务器中WheelView仓库的路径
url "http://127.0.0.1:8081/nexus/content/repositories/WheelView"
}
}
dependencies {
// cn.skw.widget是仓库的GROUP值,SelfWheelView是仓库的POM_ARTIFACT_ID值,1.0是仓库版本号,@aar是android库的后缀名(如果是jar包,则不需要@aar)
compile 'cn.skw.widget:SelfWheelView:1.0@aar'
}
点击查看使用android共享库的示例的源码。