AndroidStudio下结合本地maven仓库多版本配置

  对AndroidStudio熟悉些的童鞋都知道通过配置gradle可以实现多渠道打包的功能,由于目前项目是内部sdk,所以使用到了maven局域网私服,通过局域网私服,可以很方便的为团队中其他开发者提供AAR包,方便团队开发。今天利用gradle进行了下相关的配置,通过gradle配置,可以直接发布到maven仓库,这里记录下相关操作。

  1.首先需要搭建好本地局域网的maven私服,可以通过maven和nexus OSS搭建环境,接下来创建两个不同的发布环境,这里我分为测试用的test和正式发布的release环境。

  2.在工程目录下gradle.build文件中声明maven插件的使用(注意这里不是工程的根目录下的gradle.build),如下:

apply plugin: 'com.android.library'
apply plugin: 'maven'
由于我的项目是个库,所以这里声明的是com.android.library,如果是正常的android应用的话应该是com.android.application

  3.在项目根目录下面的local.properties文件中声明maven上传时的用户名,密码及发布的版本类型,如下:

sdk.name=admin
sdk.pwd=admin123
#修改完编译模式以后需要在gradle.properties文件中更新对应模式下的版本号
TEST=true
   这里的TEST说明是否为测试模式

  4.在工程目录下配置不同版本的相关信息,如下:

testUrl=本地测试仓库的地址,通过登录nexus oss获得
releaseUrl=正式版仓库地址,获取方式同上
testVersion=测试版本版本号
releaseVersion=正式版本版本号
  5.gradle.build文件中的代码:
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def buildType = properties.getProperty("TEST")
def uploadUrl
def proVersion
if ("true".equalsIgnoreCase(buildType)) {
    uploadUrl = project.testUrl
    proVersion =project.testVersion
} else {
    uploadUrl = project.releaseUrl
    proVersion=project.releaseVersion
}
defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        buildConfigField "boolean", "TEST", buildType
    }
task sourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}
task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    exclude "xxx"
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
javadoc {
    options {
        encoding "UTF-8"
        charSet "UTF-8"
        author true
        version true
        links "xxx(网址)"
        title "xxx(标题)"
    }
}
artifacts {
    archives javadocJar
    archives sourcesJar
}
uploadArchives {
    String sdkname = properties.getProperty("sdk.name")
    String sdkpwd = properties.getProperty("sdk.pwd")
    repositories.mavenDeployer {
        repository(url: uploadUrl) //局域网仓库地址
                {//仓库地址
                    authentication(userName: sdkname,//用户名
                            password: sdkpwd)//密码
                }

        pom.project {
            name 'xxx'
            packaging 'aar'
            description 'xxx'
            url uploadUrl //局域网仓库地址
            groupId "xxx"
            artifactId 'xxx'
            version proVersion
        }
    }
}
这里说明下defaultConfig这段代码应该是在Android{...}里面的,代码中标注xxx的都是根据项目进行配置的,通过这样配置以后,如果需要上传测试模式下最新的包供团队的开发人员使用的话直接将local.properties文件中的TEST声明为true,然后运行uploadArchives即可,如果要发布正式环境的aar包时,只需要将TEST声明为false,运行uploadArchives,团队中的其他成员更新下依赖就可以了,当然如果需要测试环境和正式环境同时发布,也可以自己写一个task,这里就不做说明了。

你可能感兴趣的:(AndroidStudio下结合本地maven仓库多版本配置)