自定义Module发布到Maven

490 阅读2分钟

本文只是介绍android将自定义的jar或者aar发布到私服的maven上,这里主要分为两部分,第一部分是使用nexus搭建自己的私服,第二部分是进行发布 一、使用nexus搭建私服(mac环境)

  1. 安装JDK环境(不会的自行谷歌)
  2. 下载nexus安装包,下载链接
  3. 下载完成后解压到固定目录,执行/xxx/xxx start启动(这里类似mysql启动)
  4. 打开浏览器localhost:8081,默认账号admain,默认密码admain123 二、定义module发布Maven 2.1配置私服 首先最基本的就是需要配置地址,账号,密码,大致说一下过程,如果项目想使用第三方库,第一步肯定是拉取到本地,此时就需要一个类似路由的东西去maven库进行相应第三方库的拉取。 android新建的项目根目录都有gradle.properties(注)配置文件,需要在其中进行私服maven地址:http://localhost:8010/nexus/content/repositories/releases/以及私服maven快照地址:http://localhost:8010/nexus/content/repositories/snapshots/,还有就是私服账号密码。 2.2发布库配置 这里需要配置的要多一点,还需要注意区分android和javalib否则会编译失败
  5. 定义maven.gradle文件,gradle采用的开发语言为groovy这里不做详细描述,后面会有相应的demo进行讲解。
  6. 在maven.gradle文件中编写你要发布的内容,因为是maven库,必须要依赖maven,再有就是必须要配置的MAVEN_GROUP_ID,MAVEN_ARTIFACT_ID,MAVEN_VERSION,MAVEN_URL(私服地址),MAVEN_SNAPSHOT_URL(私服快照地址)
  7. 在库的build.gradle中应用maven.gradle
  8. 执行发布命令gradle :module名称:uploadArchives 2.3配置文件demo 详解可以看代码中的注释
/**
 * Author: fanyafeng
 * Data: 2020/4/16 10:43
 * Email: fanyafeng@live.cn
 * Desc: 发布到本地maven库所需maven文件
 * 发布版本命令:gradle :module名称:uploadArchives
 * uploadArchives其实就是一个gradle的task
 * 发布新版本规则为:
 * MAVEN_GROUP_ID:xxx.xxx.xxx(一般,多的话还可以继续在后面加路径名)
 * MAVEN_ARTIFACT_ID:xxx-xxx(具体的库名称)
 * MAVEN_VERSION:x.x.x(正式版) x.x.x-SNAPSHOT(快照版)
 * 版本发布必须要高于上一个版本不能重复,否则发布失败
 * 依赖的库的格式:implementation "xxx.xxx.xxx:xxx-xxx-xxx:0.1.0"
 *
 * 脚本语言为groovy
 */
apply plugin: 'maven'
def MAVEN_GROUP_ID = 'com.dmall.ui'
def MAVEN_ARTIFACT_ID = 'dialog'
//def MAVEN_VERSION = '0.6-SNAPSHOT'
def MAVEN_VERSION = '0.1.0'
task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    failOnError = false
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}
artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: MAVEN_REPO_RELEASE_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
            snapshotRepository(url: MAVEN_REPO_SNAPSHOT_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
            pom.groupId = MAVEN_GROUP_ID
            pom.artifactId = MAVEN_ARTIFACT_ID
            pom.version = MAVEN_VERSION
        }
    }
}

注:

  1. properties为配置文件,语法有两种一种是以#开头的注释,再有就是正规的key=value键值对,可以没有value但是不能没有key,android中assets中存放的就是这类的配置文件,配置文件读取可以进行自己解析,android中自带工具类解析。
  2. gradle基本都是groovy语言编写,其中也可以穿插java,都是jvm语言。