Android Studio发布aar到maven仓库

直接命令执行

首先安转mvn,至于怎么安装可以直接百度
在CMD终端执行以下命令

mvn deploy:deploy-file -DgroupId=com.test.uvc.camera -DartifactId=libusbcommon -Dversion=v4.1.1 -Dpackaging=aar -Dfile=libusbcommon_v4.1.1.aar -Durl=http://******/repository/android/ -DrepositoryId=android -X

参数介绍

1.DgroupId :生成的jar或者aar的group名称
2.DartifactId:artifactId 名称
3.Dversion:版本号
4.Dpackaging:文件类型,Android 一般用aar
5.Dfile:文件地址
6.Durl:公司或者私人搭建的nexus 仓库地址

Android Studio中gradle脚本执行

使用maven

  1. 加入maven插件
apply plugin: "maven"
  1. 编写上传脚本
uploadArchives {
    repositories.mavenDeployer {
        Properties properties = new Properties()
        properties.load(project.rootProject.file('gradle.properties').newInputStream())
        def userName = properties.getProperty('maven.user')
        def passwords = properties.getProperty('maven.password')
        def mavenUrl = properties.getProperty('maven.url')

        repository(url: uri(mavenUrl)){
            authentication(userName: userName, password: passwords)
        }
        // 配置 pom 信息
        pom.groupId = "com.test.tracker"
        pom.artifactId = "track"
        pom.version = "1.0.5"
        pom.packaging = "aar"
    }
}

task uploadSourceJar(type: Jar) {
    // 定义一个标志 (生成的jar包后面加上sources, 如: myhttp-1.0.2-20210927.115550-2-sources.jar)
    classifier = 'sources'
    println "srcDirs=${project.android.sourceSets.main.java.sourceFiles}"
    // 指定源码文件路径
    from project.android.sourceSets.main.java.sourceFiles
}

// 指定发包的时候,需要执行的task任务
artifacts {
    archives uploadSourceJar
}
  1. 执行命令
gradlew tracker:uploadArchives

使用maven-publish

  1. 首先在module的build.gradle 文件顶部加入
apply plugin: 'maven-publish'
  1. 在build.gradle 底部加入如下代码,注意不要放在android {}block中
task sourceJar(type: Jar) {
    from android.sourceSets.main.java.getSrcDirs() // 源码路径
    archiveClassifier = "sources"
}
publishing {
    Properties properties = new Properties()
    properties.load(project.rootProject.file('gradle.properties').newInputStream())
    def userName = properties.getProperty('maven.user')
    def passwords = properties.getProperty('maven.password')
    def mavenUrl = properties.getProperty('maven.url')
    repositories {
        maven {
            credentials {
                username userName
                password passwords
            }
            url mavenUrl // 仓库地址
            allowInsecureProtocol = true
        }
    }
    publications {
        release(MavenPublication) {
            // 添加以下配置可以自动从编译容器中获取release版本内容(使用debug可以获取debug版本内容),并生成pom文件
            artifact sourceJar
            afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }
            version '1.0.6'//版本
            artifactId 'track'
            groupId = 'com.test.tracker'
            description 'track'
 pom.withXml {
        def dependenciesNode = asNode().appendNode('dependencies')
        configurations.implementation.allDependencies.each {
            // 避免出现空节点或 artifactId=unspecified 的节点
            if (it.group != null && (it.name != null && "unspecified" != it.name) && it.version != null) {
                println "dependency=${it.toString()}"
                def dependencyNode = dependenciesNode.appendNode('dependency')
                dependencyNode.appendNode('groupId', it.group)
                dependencyNode.appendNode('artifactId', it.name)
                dependencyNode.appendNode('version', it.version)
                dependencyNode.appendNode('scope', 'implementation')
            }
        }
    }

        }
    }
}
  1. 在工程的gradle.properties 中加入 maven 相关的配置信息,大致如下,
    主要是搭建的nexus账号及android仓库的地址
maven.url=http://*******/repository/android/
maven.user=zhangsan
maven.password=zhangsan123
  1. 在AndroidStudio 终端,执行 命令 .\gradlew publish,即可
    效果如下


    image.png

参考完整配置

你可能感兴趣的:(Android Studio发布aar到maven仓库)