android studio 使用maven-publish 插件上传aar到远程maven仓库
上传插件编写
1、在工程目录下添加upload.gradle文件
apply plugin: 'maven-publish'
def RELEASE_REPOSITORY_URL = 'http://xxx.xx.com/artifactory/repository/release/'
def SNAPSHOT_REPOSITORY_URL = 'http://xxx.xx.com/artifactory/repository/snapshot/'
def USERNAME = "developer"
def PASSWORD = "developer"
afterEvaluate {
publishing {
//配置maven 仓库
repositories { RepositoryHandler handler ->
handler.maven { MavenArtifactRepository mavenArtifactRepository ->
allowInsecureProtocol(true)
url = VERSION.endsWith('SNAPSHOT') ? SNAPSHOT_REPOSITORY_URL : RELEASE_REPOSITORY_URL
credentials {
username USERNAME
password PASSWORD
}
}
}
//配置发布产物
publications { PublicationContainer publicationContainer ->
//发布 snapshot 包
debug(MavenPublication) {
from components.debug
artifact sourceJar
groupId = GROUP_ID
artifactId = ARTIFACT_ID
version = VERSION
}
release(MavenPublication) {
// Applies the component for the release build variant.
from components.release
artifact sourceJar
groupId = GROUP_ID
artifactId = ARTIFACT_ID
version = VERSION
}
}
}
}
//增加上传源码的task
task sourceJar(type:Jar){
from android.sourceSets.main.java.srcDirs
archiveClassifier = "source"
}
2、在要上传的module的build.gradle添加插件
plugins {
id 'com.android.library'
}
apply from: "../upload.gradle"
3、在要上传的module配置对应的aar信息,新建gradle.properties
GROUP_ID=com.xx.card
ARTIFACT_ID=card
VERSION=0.0.1
遇到的问题以及解决方案
1、如何区分上传SNAPSHOT和正式版本?
url = VERSION.endsWith(‘SNAPSHOT’) 插件内通过版本字符串中是否含有该字段
2、多渠道打包如何上传对应渠道
from components.debug,把debug修改成对应渠道即可。参考Build Variant