在公司项目做多了,总能抽取出一些常用的框架,工具类等做成库工程,供以后的项目添加依赖来使用。如何把库工程上传到公司的公共服务器供大家使用呢?
</pre><p>服务器需要安装Nexus,搭建一个maven仓库</p><p>Studio库工程的 build.gradle(project的)指定maven地址,如我的</p><p></p><pre name="code" class="html">buildscript {
repositories {
jcenter()
maven {
url 'http://192.168.8.244:8888/repository/private/'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
}
}
allprojects {
repositories {
jcenter()
maven {
url 'http://192.168.8.244:8888/repository/private/'
}
}
}
build.gradle(Module的)添加上传的task
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) {
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
source = android.sourceSets.main.java.srcDirs
options {
encoding 'utf-8'
}
exclude '**/BuildConfig.java'
exclude '**/R.java'
failOnError false
}
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
}
}
工程的根目录下创建文件 gradle.properties
GROUP=com.example.library (一般是项目的包名)
VERSION_NAME=1.2.3 (版本号)
POM_ARTIFACT_ID=MyLibrary (库名字)
SNAPSHOT_REPOSITORY_URL=http://192.168.8.244:8888/repository/private/
RELEASE_REPOSITORY_URL=http://192.168.8.244:8888/repository/private/
NEXUS_USERNAME=xxx (nexus 的登录账号)
NEXUS_PASSWORD=xxx <span style="font-family: Arial, Helvetica, sans-serif;">(nexus的密码)</span>
点击Studio软件里 RUN 的那个绿色的小三角箭头或者在Gradle里找到 Tasks下的upload的uploadArchives任务双击,即可完成上传到maven
项目中如何引用上面上传的库工程呢?
build.gradle(project的)指定maven地址,如前文所示
build.gradle(Module的)的dependencies里添加
compile 'com.example.library:MyLibrary:1.2.3' //对应gradle.properties的 GROUP:POM_ARTIFACT_ID:VERSION_NAME