相关文章推荐
def MAVEN_PASSWORD = 'admin123' def MAVEN_URL = 'http://localhost:8081/repository/maven-releases/' publishing { publications { uploadSDK(MavenPublication) { groupId MAVEN_GROUPID pom.withXml { def dependenciesNode = asNode().appendNode('dependencies') configurations.implementation.allDependencies.withType(ModuleDependency) { ModuleDependency dp -> if (dp.version != "unspecified") { def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', dp.group) dependencyNode.appendNode('artifactId', dp.name) dependencyNode.appendNode('version', dp.version) if (dp.excludeRules.size() > 0) { def exclusions = dependencyNode.appendNode('exclusions') dp.excludeRules.each { ExcludeRule ex -> def exclusion = exclusions.appendNode('exclusion') exclusion.appendNode('groupId', ex.group) exclusion.appendNode('artifactId', ex.module) repositories { maven { url MAVEN_URL credentials { username MAVEN_USERNAME password MAVEN_PASSWORD task publishToMaven(dependsOn: ['assemble', 'publish']) { doLast { println "finish publish to maven" publishToMaven.setGroup('upload')

2.在各个lib module gradle文件中添加引用

apply from: '../upload-aar.gradle'

3. 在各个lib module gradle文件中添加“artifactId”“version”配置

因为“artifactId”“version”各个lib module都不一样,所以放在各自的gradle中配置

//maven配置
publishing {
    publications {
        uploadSDK(MavenPublication) {
            artifact "build/outputs/aar/mylibrary1-release.aar"
            artifactId "MyLibrary1"
            version android.defaultConfig.versionName

4.在lib1中添加lib2的引用

因为最终app只希望有一个引用,所以在lib1的gradle中要填加如下引入,这样在生成的pom文件中会带上lib2的引用。当然你也可以把这行代码添加到app的gradle中。

implementation 'com.demo:MyLibrary2:1.0.0.0'

三.上传aar

如图点击publishToMaven,分别上传lib1,lib2

四.引用aar

1.声明maven服务器

    maven {
        url "http://localhost:8081/repository/maven-releases/"
        credentials {
             username = "admin"
             password = "admin123"
         }
    }

2.引用aar

implementation 'com.demo:MyLibrary1:1.0.0.0'

五.常见问题

1.gradle中配置的exclude写法不正确,导致生成pom文件异常,引入的时候还需要再exclude一次。

例如:错误写法

implementation('com.facebook.fresco:animated-gif:0.14.1') {
    exclude module: 'support-v4'

正确写法:

implementation('com.facebook.fresco:animated-gif:0.14.1') {
    exclude group: 'com.android.support', module: 'support-v4'
                                    今天做了一个将Module上传Maven仓库的功能,基本上就是把以前的代码拷了一份,在此记录一下,给有需要的童鞋参考。
1.新建maven_upload.gradle
在项目根目录下,新建 maven_upload.gradle
apply plugin: 'maven'
def REPOSITORY_URL = "http://xxxx.yyyy.你的maven服务器的地址/" //TODO <--- 请修改
def NEXUS_USERNAME = "maven服务器账号" //TODO &l
                                    博客搬迁至https://blog.wangjiegulu.com
RSS订阅:https://blog.wangjiegulu.com/feed.xml
RapidMavenPushPlugin
用于上传你的 library 库到多个 Maven 仓库的 Gradle 插件。
Github: https://github.com/wangjiegulu/RapidMavenPushPlugin
                                    本文基于Android Studio操作,借助Gradle插件 —— Maven Publish,实现在构建完安卓库或者纯Java库之后,自动将之部署aar或jar至maven仓库,使其成为一个公共模块,供其他项目引用。
首先了解一下其他的多模块开发方法。
第一种:在setting.gradle中定义子模块然后 api Project(':...')),直接引用 。
第二种,部署至远程服务器,如 jitpack.io(傻瓜式操作,还支持gitee)
第一种方法适合小库,优点是改动后可一键构建运行,缺点是
maven 命令除了常用的几个,大部分经常记不住,整理一下,方便查询。
maven 命令的格式为 mvn [plugin-name]:[goal-name],可以接受的参数如下,-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;
-P 指定 Profile 配置,可以用于区分环境;
-e 显示maven运行出错的信息;
-o 离线执行命令,即...
     1、下载Nexus
     2、Nexus的安装与配置
     3、Nexus 私服仓库的创建二、Android Gradle 配置远程maven 脚本     1、AndroidGradle7.0以前
     1、AndroidGradle7.0以后很多小伙伴在开发Android候,特别是一些ToB项目中,往往要出不同的app,但是依赖的业务流程基本都是一样的,相当于多个app要依赖一个lib。为了方便维护lib,一般做法会有一下几种:而
                                    平开发中会把一些独立的功能模块抽取出来作为sdk,既方便业务接入,又能让其他业务线快速复用。那么我们就需要将sdk打包上传maven仓库,让业务侧依赖即可。在上传产物到maven仓库之前,我们的知道产物到底是什么。Android Gradle插件根据项目gradle中应用不同的插件类型在编译组装后会生成不同的产物:Android项目的主工程app的gradle配置文件依赖:
因此,在通过编译命令 或后,就会在build/outputs/apk文件下生成产物:如图,apk就是产物(构件)。如果是海外市场,
在module的gradle文件中新增依赖数组变量
//工程中所有gradle aar依赖信息
ext.gradleAarDepends = ["com.example.test:test01:1.0.0","com.example.test:test02:1.0.0"]
编写发布任务
在module的gradle文件中编写发布任
 
推荐文章