Android生成aar并上传私有仓库流程

特别说明:该文档以AndroidStudio为编译器,maven私有仓库搭建完成进行描述

第一步:创建库项目

1,File—>New—>NewProject  创建一个Android项目

2,在当前项目上右键New—>Module—>Android Library  创建生成aar需要的library

第二步:编写生产aar脚本

1,需要重命名或者移动aar位置,需要编写task

(1),脚本编写位置:library下的build.gradle

(2),脚本实例如下:

//生成aar的Task
task makeAar(type: Copy) {
    //默认aar生成的位置
    from('build/outputs/aar/')
    //把aar移动到指定位置
    into('build/libs/')
    //aar默认生成名字为库library名称-release.aar
    include('mingonghui-library-release.aar')
    String buildNumber = getHudSonBuild()
    //重命名
    rename('mingonghui-library-release.aar', "mingonghui-library- 
    release-${android.defaultConfig.versionName}.${buildNumber}.aar")
}

//生成aar脚本执行
makeAar.dependsOn(build)
//上传maven的脚本地址
apply from:"../maven_android_push.gradle"

2,直接命令生成aar

在命令窗口,如下命令,即可生成aar,aar位置在library/build/outputs/aar/下面

gradlew -b build.gradle clean
gradlew -b ./library/build.gradle build

第三步:上传maven脚本

1,脚本实例代码

// 一个可以让你把库上传到maven仓库的插件
apply plugin: 'maven'

// 声明变量记录maven库地址
def mavenRepositoryUrl
def versionName;
// NEXUS_USERNAME等变量在我们主项目的gradle.properties中可以找到
def getRepositoryUsername() {
    return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}

def getRepositoryPassword() {
    return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}

afterEvaluate { project ->
    // 我们声明我们要执行的上传到maven的task
    uploadArchives {
        repositories {
            mavenDeployer {
                if (project.hasProperty("publishtype")) {
                    println publishtype;
                    if (publishtype == "release") {
                        mavenRepositoryUrl = 
                                 "http://mvn.gemantic.com/content/repositories/releases/"
                        versionName = VERSION_NAME;
                    } else {
                        mavenRepositoryUrl = 
                                "http://mvn.gemantic.com/content/repositories/snapshots/"
                        versionName = VERSION_NAME + "-SNAPSHOT";
                    }
                }
                // 我们类比下compile com.squareup.okhttp:okhttp:2.7.0
                // groupId 对应com.squareup.okhttp; artifactId 对应okhttp;version对应2.7.0
                // 这样就类似坐标的方式定位到了制定的库文件
                pom.artifactId = POM_ARTIFACT_ID
                pom.groupId = POM_GROUP_ID
                pom.version = versionName

                // 授权验证,这里也就是你登陆搭建的私服服务器时候的用户名\密码
                repository(url: mavenRepositoryUrl) {
                    authentication(userName: getRepositoryUsername(), 
                                   password:getRepositoryPassword())
                }

                // 这里是配置我们maven库需要的pom.xml文件的各个内容,具体意思我们在主目录 
                // gradle.properties中解释
                pom.project {
                    name POM_NAME
                    packaging POM_PACKAGING
                }
            }
        }
    }
}

2,gradle.properties定义的相关常量及注释

# 私有仓库账号
NEXUS_USERNAME=admin
# 私有仓库密码
NEXUS_PASSWORD=123456
# 在POM文件中使用的group ID
POM_GROUP_ID=com.rxhui.library
# 库名称
POM_NAME=android-rxhui-scan-lib
# artifactId
POM_ARTIFACT_ID=scan-lib
# 库的打包格式为aar, 常见的还有jar
POM_PACKAGING=aar
# 库的描述,说明他是干啥的
POM_DESCRIPTION=库文件

第四步:上传命令

1,如果打包在jenkins进行工具打包,需要在jenkins配置如下命令

./gradlew -b build.gradle clean
./gradlew -b build.gradle makeAar
./gradlew -b build.gradle uploadArchives -Ppublishtype=release

2,可以在当前项目命令窗口下,直接运行

gradlew -b build.gradle clean
#如果第二步操作是在build.gradlel里面构建的task,就直接运行如下命令
gradlew -b build.gradle makeAar
gradlew -b build.gradle uploadArchives -Ppublishtype=release

其他:私有仓库创建

网上有很多相关帖子,参考示例:

https://www.cnblogs.com/avivaye/p/5345207.html

 

你可能感兴趣的:(Android开发中的自我总结)