注:该文章也同步更新到稀土掘金:链接
前言
通常,一些基础功能组件、业务组件会被多个项目组使用。因此,我们有必要将其发布到私有的maven库,方便不同的项目组进行引用。
由于gradle的不断升级,每个版本对于发布到maven私有库的方式有所不同。接下来主要将Gradle7.0作为边界进行分别说明。
具体使用
Gradle6.x及以下版本的使用
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: url//私有maven库地址) {
authentication(userName//账号, password// 密码)
}
pom.version = version // 版本信息
pom.artifactId = artifactId // 项目信息
pom.groupId = groupId
pom.name = name
pom.packaging = packaging // 打包类型,例如:aar
}
}
}
配置完成后即可在Gradle Tasks视图中看到uploadArchives task,点击即会自动打包并上传到配置的maven仓库
对于repository的url配置有几种:
- 配置到当前路径的某个文件夹:repository(url: uri(’…/repository’))
- 配置到具体的路径:repository(url: uri(‘file://E:/repository’))
- 配置到服务器:repository(url: http://…)
Gradle7.0及以上版本的使用
apply plugin: 'maven-publish'
afterEvaluate {
publishing {
repositories {
// 本地仓库
maven {
name('modulelive')
url uri("../repo")
}
// 远程仓库
maven {
allowInsecureProtocol(true)
name('modulelive')
url = url//私有maven库地址
credentials {
username// 账号
password// 密码
}
}
}
publications {
debugType(MavenPublication) {
from components.debug
groupId "com.example.live"
artifactId "modulelive"
version "1.0.0"
}
releaseType(MavenPublication) {
from components.release
groupId "com.example.live"
artifactId "modulelive"
version "1.0.0"
}
}
}
}
可以看到,maven-publish插件可以为应用或库模块中的每个构建变体进行独立发布。
- Android官方介绍:maven-publish
- Gradle官方介绍:maven-publish