Gradle 使用 maven-publish 上传 aar 包到 Nexus 私服
在组件化项目架构中每个组件管理我们一般使用分仓库管理,每个组件分别打包成aar包引入项目依赖。老版本 gradle 我们一般使用 maven 插件来上传aar包,而 新版本更新了上传插件为 maven-publish
1 2 3 4 5 6 7 8 9 10
| apply plugin: 'maven'
apply plugin: 'maven-publish'
plugins { id 'maven-publish' }
|
如何生成 aar 包
可以在 library 组件下执行 assemble 来生成 aar 包,输出目录为 ++build/outputs/aar++
使用maven-publish 插件
在module下gradle文件加入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| def GroupId = 'com.zxj.lib' def ArtifactId = 'custom_lib' def Version = '1.0.1'
def userName = "admin" def passWord = "123456"
def releasesRepoUrl = "http://172.18.15.140:8081/repository/custom_host/"
task generateSourcesJar(type:Jar){ from android.sourceSets.main.java.srcDirs classifier "sources" }
afterEvaluate { publishing { publications{ release(MavenPublication){
groupId = GroupId artifactId = ArtifactId version = Version
afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) } artifact generateSourcesJar pom.withXml{ def dependenciesNode = asNode().appendNode("dependencies") configurations.implementation.allDependencies.forEach(){ Dependency dependency -> if (dependency.version != "unspecified" && dependency.name != "unspecified"){ def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', dependency.group) dependencyNode.appendNode('artifactId', dependency.name) dependencyNode.appendNode('version', dependency.version) } } } } }
repositories { maven { allowInsecureProtocol = true url = releasesRepoUrl credentials { username = userName password = passWord } } } } }
|
执行 gradle push 发布