maven仓库小解

/ 0评 / 5

前言

日常开发中我们经常需要使用三方库,一般来说三方库都是托管在jcenter等上面,我们只需要一句话即可进行引用,下面就介绍下引用原理以及将自己的代码打包上传等。

上传到本地

maven仓库其实就是一个遵循特定目录结构的文件夹而已,所以我们可以直接将仓库放在本地即可。

1、应用maven插件

apply plugin: 'maven'

2、定义上传信息

uploadArchives {
    repositories {
        mavenDeployer {
            //设置插件的GAV参数
            pom.groupId = 'com.fmos.fake'
            pom.artifactId = 'processor'
            pom.version = '1.0.5-snapshots'
            //文件发布到下面目录
            repository(url: uri("${rootProject.projectDir}/repo"))
        }
    }
}

pom.groupId 类似于包名

pom.artifactId 类似于项目名

pom.version 版本号

使用方法就是很简单的一句话 :

implementation "com.fmos.fake:processor:1.0.5"

3、执行任务

我们可以看到如下任务,执行即可在项目的同级目录下面看到一个repo文件夹,里面就包含了我们上传的东西

img img

4、使用本地仓库

我们需要引入我们刚才的本地仓库,直接使用maven ,如下即可

// build.gradle
allprojects {
    repositories {
        maven { url uri("${rootProject.projectDir}/repo") }
        google()
        jcenter()

    }
}

// app/build.gradle
implementation "com.fmos.fake:processor:1.0.5"

ps:当然我们也可以顺便上传源码以及文档,需要注意的是,如果上传文档需要指定编码方式,不然可能出现中文乱码。完成版配置如下

apply plugin: 'com.android.library'

apply plugin: 'maven'

android {
}

dependencies {
}

//生成文档注释
task androidJavadocs(type: Javadoc) {
    failOnError = false
    source = android.sourceSets.main.java.srcDirs
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
    classpath += files(ext.androidJar)
}

//防止生成的文档中文乱码
tasks.withType(Javadoc) {
    options{
        encoding "UTF-8"
        charSet 'UTF-8'
        links "http://docs.oracle.com/javase/7/docs/api"
    }
}

//将文档打包成jar
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

//将源码打包
task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

//包含文档和源码的aar
artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}

uploadArchives {
    repositories {
        mavenDeployer {
            //设置插件的GAV参数
            pom.groupId = 'com.fmos.fake'
            pom.artifactId = 'processor'
            pom.version = '1.0.5'
            //文件发布到下面目录
            repository(url: uri('${rootProject.projectDir}/repo'))
        }
    }
}

上传到本地maven仓库

如果我们只是使用自己使用nexus搭建仓库,那么其实我们只需要继续修改一点点而已,首先搭建本地仓库就不重复了,只需要搜索"使用nexus搭建本库仓库"即可,给出一个参看链接:https://www.cnblogs.com/demingblog/p/3840174.html

然后修改一点脚本加上用户名密码即可

uploadArchives {
    repositories {
        mavenDeployer {
            //设置插件的GAV参数
            pom.groupId = 'com.fmos.fake'
            pom.artifactId = 'processor'
            pom.version = '1.0.5-snapshots'
            //文件发布到下面目录 加入了用户名密码
            repository(url: uri('http://127.0.0.1:8081/repository/maven-releases/')) {
                authentication(userName: 'admin', password: 'admin123')
            }
        }
    }
}

配置本地仓库

maven { url uri('http://127.0.0.1:8081/repository/maven-releases/') }

当然我们也可以直接使用mavenLocal(),默认地址在C:/Users/XXX/.m2/repository/下面

allprojects {
    repositories {
        mavenLocal()
        mavenCentral()
        google()
    }
}

上传到bintray

请查看https://github.com/CB2Git/JCenter

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注