Android Studio上传aar到私有maven仓库

自从使用Android Studio来进行项目开发后,gradle就成了新的项目管理工具,对于第三方库或者插件的管理都十分方便,而我们想要自己的库也能像这样使用:

    implementation 'xxxx:xxxx:1.0.0'

我们就需要将自己的库上传到jcenter()或者自己搭建的maven服务器。

Win10上传aar到私有maven服务器

首先我们下载对应版本的nexus:https://www.sonatype.com/download-oss-sonatype

这里写图片描述

下载解压后,首先关闭杀毒软件以及一切可能占用8081端口的应用。我一开始没这样做就死活进不去;然后进入 nexus-3.11.0-01/bin 目录,使用管理员打开powerShell,同样也可以使用cmd。记住一定要使用管理员身份打开。依次执行命令:

.\nexus.exe /install
.\nexus.exe /start

这样服务就开启了,我们可以通过.\nexus.exe /status 来查看服务运行状态。接着我们就可以直接进入http://localhost:8081/ 来打开maven服务器了。

这里写图片描述
我们选择右上角的登陆选项,默认用户名 : admin , 密码 : admin123 。接着我们就会看见默认的几个库,为了教程更加简单,我们就不创建新的库了,我们最终会将aar上传到maven-release库,点击库右边对应的copy按钮可以获取URL。
这里写图片描述

接下来我们进入Android Studio,我们建立包含一个名为app的application模块以及一个名为mylibrary的library模块。步骤我就不多说了,如果你是安卓开发者你肯定是会的了。然后我们在mylibrary的源码目录随便写一个类:
CoreClass.java

public class CoreClass {
    public static String Core(){
        return "This is my core function";
    }
}

接下来我们在mylibrary的根目录下添加upload_local_maven.gradle的文件。并输入以下内容。和上传Jcenter一样,我们同样也上传pom,aar,source,doc四个文件。

apply plugin: 'maven'


//def定义的变量才会在project中
def POM_NAME='core'

def POM_VERSION='1.0.0'

def POM_ARTIFACTID="core"//项目名称id

def POM_GROUPID='com.example.mylibrary'  //项目组id

def POM_PACKAGING='aar'

def POM_DESCRIPTION='lib for Android'

def NEXUS_USERNAME='admin'   //用户名

def NEXUS_PASSWORD='admin123'  //密码

def NEXUS_REPOSITORY_URL='http://localhost:8081/repository/ttsx/'  //repository的URL



task androidJavadocs(type: Javadoc) {
    options.encoding = "utf-8"
    source = android.sourceSets.main.java.srcDirs
    //添加classpath,解析类型
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

//打包doc
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc' //分类器,区分jar
    from androidJavadocs.destinationDir
}

//打包源码

task androidSourcesJar(type: Jar) {
    classifier = 'sources'//分类器,区分jar
    from android.sourceSets.main.java.srcDirs
}

artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: NEXUS_REPOSITORY_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
            pom.project {
                name POM_NAME
                version POM_VERSION
                artifactId POM_ARTIFACTID
                groupId POM_GROUPID
                packaging POM_PACKAGING
                description POM_DESCRIPTION
            }
        }
    }
}

这里上传代码参考了https://www.jianshu.com/p/efddad9d4f84。最终目录结构
这里写图片描述
最后我们在mylibrary下的build.gradle末尾处添加如下代码,并同步gradle。

apply from: 'upload_local_maven.gradle'

最后我们在gradle的任务窗口中找到对应的上传任务并执行。
这里写图片描述
执行成功后我们就可以找到上传成功的文件了。
这里写图片描述
最后我们尝试一下在app中引用这个模块,在app的build.gradle中添加如下代码。需要特殊指定maven的库的URL。

repositories{
    maven{
        url "http://localhost:8081/repository/maven-releases/"
    }
}
dependencies {

    implementation 'com.example.mylibrary:core:1.0.0'

}

接下来就可以直接引用aar中的代码以及资源了。

猜你喜欢

转载自blog.csdn.net/a568478312/article/details/80166281