本文只是介绍android将自定义的jar或者aar发布到私服的maven上,这里主要分为两部分,第一部分是使用nexus搭建自己的私服,第二部分是进行发布 一、使用nexus搭建私服(mac环境)
- 安装JDK环境(不会的自行谷歌)
- 下载nexus安装包,下载链接
- 下载完成后解压到固定目录,执行/xxx/xxx start启动(这里类似mysql启动)
- 打开浏览器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否则会编译失败
- 定义maven.gradle文件,gradle采用的开发语言为groovy这里不做详细描述,后面会有相应的demo进行讲解。
- 在maven.gradle文件中编写你要发布的内容,因为是maven库,必须要依赖maven,再有就是必须要配置的MAVEN_GROUP_ID,MAVEN_ARTIFACT_ID,MAVEN_VERSION,MAVEN_URL(私服地址),MAVEN_SNAPSHOT_URL(私服快照地址)
- 在库的build.gradle中应用maven.gradle
- 执行发布命令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
}
}
}
注:
- properties为配置文件,语法有两种一种是以#开头的注释,再有就是正规的key=value键值对,可以没有value但是不能没有key,android中assets中存放的就是这类的配置文件,配置文件读取可以进行自己解析,android中自带工具类解析。
- gradle基本都是groovy语言编写,其中也可以穿插java,都是jvm语言。