首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Android Gradle插件和maven-publish插件发布所有风格的变体?

在Android项目中,使用Gradle插件和maven-publish插件发布所有风格的变体(Build Variants)到Maven仓库是一个常见的需求。以下是一个详细的步骤指南,展示了如何配置你的build.gradle文件以实现这一目标。

前提条件

  1. Android Gradle插件:确保你已经在项目中应用了Android Gradle插件。
  2. maven-publish插件:确保你已经在项目中应用了maven-publish插件。

步骤1:应用插件

在你的build.gradle文件中应用必要的插件。

代码语言:javascript
复制
plugins {
    id 'com.android.library'
    id 'maven-publish'
}

步骤2:配置Android模块

配置你的Android模块,包括buildTypesproductFlavors

代码语言:javascript
复制
android {
    compileSdkVersion 30

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            // Debug-specific configurations
        }
    }

    productFlavors {
        flavor1 {
            dimension "version"
        }
        flavor2 {
            dimension "version"
        }
    }
}

步骤3:配置maven-publish插件

配置maven-publish插件以发布所有变体。

代码语言:javascript
复制
afterEvaluate {
    publishing {
        publications {
            android.libraryVariants.all { variant ->
                def variantName = variant.name.capitalize()
                def publicationName = "maven${variantName}"

                create(publicationName, MavenPublication) {
                    from components.findByName(variant.name)

                    groupId = 'com.example'
                    artifactId = 'my-library'
                    version = variant.versionName

                    // 添加源代码和Javadoc
                    artifact tasks["bundle${variantName}Aar"]
                    artifact tasks["generate${variantName}SourcesJar"]
                    artifact tasks["generate${variantName}JavadocJar"]
                }
            }
        }

        repositories {
            maven {
                url = uri("file://${buildDir}/maven-repo")
            }
        }
    }
}

步骤4:添加任务生成源代码和Javadoc

为了发布源代码和Javadoc,你需要添加生成这些工件的任务。

代码语言:javascript
复制
android.libraryVariants.all { variant ->
    def variantName = variant.name.capitalize()

    task("generate${variantName}SourcesJar", type: Jar) {
        archiveClassifier.set('sources')
        from android.sourceSets.main.java.srcDirs
    }

    task("generate${variantName}Javadoc", type: Javadoc) {
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }

    task("generate${variantName}JavadocJar", type: Jar, dependsOn: "generate${variantName}Javadoc") {
        archiveClassifier.set('javadoc')
        from tasks["generate${variantName}Javadoc"].destinationDir
    }
}

步骤5:发布到Maven仓库

运行以下命令发布所有变体到本地Maven仓库:

代码语言:javascript
复制
./gradlew publish

总结

通过以上步骤,你可以使用Android Gradle插件和maven-publish插件发布所有风格的变体到Maven仓库。这个配置包括:

  1. 应用必要的插件。
  2. 配置Android模块的buildTypesproductFlavors
  3. 配置maven-publish插件以发布所有变体。
  4. 添加生成源代码和Javadoc的任务。
  5. 运行发布命令。
相关搜索:如何使用maven-publish gradle插件附加AAR文件的源代码?使用maven-publish发布android apk和aar with build variant (android gradle plugin 4.0)如何在teamcity上发布gradle,以发布使用maven插件的gradle版本?如何从我自己的Gradle插件中确定正在使用的Android Gradle插件版本?Gradle android插件,如何根据不同的产品风格复制和加载不同的动态库?如何使用Android Gradle插件3.0.0+操作不同的输出?如何从自定义插件设置Gradle Artifactory发布插件的默认配置/属性如何在TestNG和JUnit中使用JaCoCo Gradle插件?如何使用gradle脚本kotlin和spring boot gradle插件构建可运行的jarCertPathValidatorException:找不到证书路径的信任密钥。在android中更新gradle和gradle插件如何获取Android Gradle插件正在使用的R8版本?使用"flatDir“中的插件和依赖项进行Gradle构建如何使用Kotlin DSL和插件在Gradle中创建胖Jar使用android项目的Gradle插件将代码注入合并的清单中如何使用Jenkins pipeline和xUnit插件发布Boost单元测试Gradle如何在包含的公共构建脚本中使用插件如何使用自定义插件在Gradle 5.x中排除已解析的插件?Android Gradle插件仅支持Kotlin Gradle插件版本1.2.51及更高版本。项目'MyApp‘正在使用版本1.1.51。受影响的模块:应用在添加android平台时使用Ionic2更改插件gradle文件的位置如何在不发布到maven/ivy存储库的情况下使用自定义gradle插件?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android:发布aar包到maven仓库以及 maven插件 和 maven-publish 插件的区别

在 Gradle 1.3 中,引入了一种新的发布插件,即:maven-publish ,这个新的插件引入了一些新概念和新功能,使 Gradle 发布功能更加强大,现在是发布工件的首选选项。...提供的 maven 插件 和 maven-publish 插件,如何发布aar/jar包。...Android Gradle 插件会为应用或库模块中的每个构建变体工件创建一个组件,您可以使用它来自定义要发布到 Maven 代码库的发布内容 Android 插件所创建的组件取决于模块是否使用应用或库插件...Android Gradle 插件 创建的 组件,当作发布内容的时候,aar文件 和 依赖传递,都得到了解决,非常完美。...maven-publish 插件,从gradle 1.3 之后开始支持,且是现在的通用方案,且功能更加强大,配合 Android Gradle 插件提供的组件内容,配置也很简单,推荐使用。

4.5K30

【Android Gradle 插件】主工程依赖指定 Library 的特定变体 ( LibraryExtension#publishNonDefault 配置 | 依赖指定 Library 变体 )

在 LibraryExtension 中的 publishNonDefault 配置 , 是用于配置是否生成所有配置对应的构件 ( artifacts ) , 默认情况下该配置为 false ; 默认情况下...是否为所有配置发布构件,而不仅仅是默认配置。...构件 ; 默认情况下生成 debug 版本的构件 ; 二、依赖指定 Library 变体 ---- Android 的 Application 主工程 经常需要 引用 Library 依赖库工程 , 依赖库的...build.gradle 中可以配置多个 buildType 变体 , 最常见的是 debug 和 release 变体 , 在引用依赖库时 , 可以指定引用哪个变体 , 依赖配置如下 : dependencies...配置为 release 变体 , 默认就生成该变体对应的依赖库 ;

60330
  • Android Studio 和 Gradle 插件使用全新版本编号

    在此版本中,我们调整了 Android Studio 和 Gradle 插件的版本编号方案。...此项变更将 Gradle 插件从 Android Studio 的版本编号方案中剥离,并使 Android Studio 的每个版本对应于哪个年份和 IntelliJ 版本变得更加清晰。...Android Gradle 插件的新版本编号方案 在 AGP 7.0.0 中,我们采用了 语义化版本 的原则,并与 AGP 所需的 Gradle 版本保持一致。...Android Studio 和 Android Gradle 插件之间的兼容性不会更改。您可以使用更新版本的 Android Studio 打开使用稳定版 AGP 的项目。...△ ADB 无线调试设置窗口 未来计划 如果您想详细了解关于此版本 Android Studio 和 Android Gradle 插件的其他变更,请务必查看 版本说明。

    1.5K40

    使用新 Android Gradle 插件加速您的应用构建

    为了获得最佳性能,建议您使用 Gradle 和 Android Gradle 插件这两者的最新版本。...△ 配置缓存带来的性能提升 上图展示包含 24 个子项目的 Gradle 构建示例,这组构建使用了最新版本的 Kotlin、Gradle 和 Android Gradle 插件。...关于 Gradle 配置缓存和如何迁移您的构建任务的更多信息,请参阅: Gradle 文档 深入探索 Android Gradle 插件的缓存配置 扩展 Android Gradle 插件 不少开发者都发现在自己的构建任务中...Android Gradle 插件在 7.0 版本中引入了新的 API,让您可以访问到这些变体对象和一些中间工件。这样一来,开发者就可以在不操作构建任务的前提下改变构建行为。...Variant API、工件和任务 获取关于 Android Gradle 插件新 Variants 和 Artifact API 的资料,这些资料可以帮助您更深入了解如何与中间工件进行交互。

    2.7K30

    Gradle Android插件使用的中那些特别注意的点

    Gradle 插件 这是截至目前在使用Gradle的过程中遇到的最大的坑。目前gradle的Android插件官方提供了两个版本:标准版本和实验性版本。.../user-guide 由于这部分内容出现较早,已经有翻译好的版本《Gradle Android插件用户指南翻译》,附上对应的gitbook、github地址、和第一翻译作者博客地址: gitbook...对于实验性版本的一些特别说明 相关环境 必须使用特定的Gradle版本:使用gradle 2.5 必须使用特定的NDK的版本:r10e 必须使用19.0.0以上的Android build tools...相关配置 JNI 不再需要Android.mk和Application.mk文件,相关配置都添加在build.gradle中 Native的so不是放在libs下面,而是放在代码目录中,与java...E5%85%B3%E9%97%AD/ 说明:使用gradle自定义打出jar并修改buildConfig中ENABLE_DEBUG的值 - Android Studio使用新的Gradle构建工具配置

    81760

    【Android Gradle 插件】自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )

    插件模块 ---- 如果想要引入该插件 , 需要将该插件上传到 远程仓库 或者 本地仓库 中 , 才能通过 在 Android 工程的根目录下的 build.gradle 构建脚本 中使用该 自定义...: 'maven-publish' 然后 , 创建 publishing 扩展 , 在该扩展中 , 可以在其中的 publications 脚本块 中为插件传入参数 ; 注意 : publications..." 是 Group 分组 " gradle " 是 插件名称 " 4.2.1 " 是 插件的版本号 上述 3 个元素使用 " : " 英文冒号 隔开 ; 因此 , 在自定义 Gradle 插件模块中...插件上传到 远程仓库 或者 本地仓库 中 apply plugin: 'maven-publish' // 发布到 远程/本地仓库 相关配置 publishing { publications...// 用于将 插件上传到 远程仓库 或者 本地仓库 中 apply plugin: 'maven-publish' // 发布到 远程/本地仓库 相关配置 publishing { publications

    1.7K20

    【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )

    /studio/build/dependencies Android Gradle 插件配置与 Gradle 配置关联 : 【Android Gradle 插件】Gradle 依赖管理 ① ( org.gradle.api.Project...配置 | Android Gradle 插件配置与 Gradle 配置关联 ) ★ Android Gradle 插件文档主页 : https://google.github.io/android-gradle-dsl.../han1202012/Android_UI 一、Android 中的 WebP 图片格式使用 ---- 在 Android 安装包优化 专栏中 , 介绍了如何 给 Android APK 安装文件进行瘦身...等方法进行 APK 瘦身 ; 之后的系列文章开始介绍如何使用 自定义 Gradle 插件 , 在编译时将资源中的图片都转为 WebP 格式 ; 注意 : 在低于 Android 3.2 版本的系统中..., WebP 格式无法使用 ; Launcher 图标必须使用 PNG 格式的 ; 9patch 图片不能转为 WebP 格式的 ; 使用 WebP 格式的图片 的前提是 API 版本需要大于 14 ;

    1.4K10

    【Android Gradle 插件】自定义 Gradle 插件模块 ⑤ ( 完整总结 ) ★★★

    Library 模块中定义插件 四、配置自定义 Gradle 插件发布选项 五、配置 Group 分组、插件名称、插件版本号 六、自定义 Gradle 插件发布配置 七、META-INF 中声明自定义插件的核心类...插件是无法在其它 Module 中引入的 ; 四、配置自定义 Gradle 插件发布选项 ---- 如果想要将 插件上传到 远程仓库 或者 本地仓库 中 , 需要引入一个 maven-publish...:4.2.1” 代码中 " com.android.tools.build " 是 Group 分组 " gradle " 是 插件名称 " 4.2.1 " 是 插件的版本号上述 3 个元素使用 ".../ artifactId 配置中 自己指定 插件名称 ; // 用于将 插件上传到 远程仓库 或者 本地仓库 中 apply plugin: 'maven-publish' // 发布到 远程/本地仓库.../ publications 脚本块中 自己指定 // 用于将 插件上传到 远程仓库 或者 本地仓库 中 apply plugin: 'maven-publish' // 发布到 远程/本地仓库

    1.5K20

    【Android 字节码插桩】Gradle插件基础 & Transform API的使用

    ’ 就是Android提供出来构建APK的一个gradle插件 在该篇文章中,我们主要使用 静态类型的 Java 或 Kotlin 实现的插件,实际测试java 或 kotlin实现的插件, 比 groovy...Gradle 将负责编译和测试插件,并使其在构建脚本的类路径上可用。该插件对构建使用的每个构建脚本都是可见的。...但是,它在构建之外不可见,因此不能在定义它的构建之外重用插件 独立项目 (SDK) 插件创建一个单独的项目。该项目生成并发布一个 JAR,然后您可以在多个构建中使用它并与他人共享。...看下面: 如果要使我们编写的gradle插件被外部项目所引用,比如每个AndroidStudio创建的项目都依赖了’com.android.application’这个插件,那么我们就需要使用这种独立项目来完成...比如 CONTENT_CLASS 和 SCOPE_FULL_PROJECT 表示了所有项目中 java 编译成的 class 组成的资源流。

    56310

    开发Gradle插件并上传至本地maven库

    作为一个Android开发者,知道gradle是用来构建Android项目的,一开始在学校的时候,没怎么关注并使用过gradle,现在工作发现gradle配置、插件等等,是一个很强大的工具。...因此就开始了学习之路,这边介绍一下如何使用idea开发一个Gradle插件并将其上传至本地maven库,这样本地就可以使用这个插件了。...插件是一个二进制插件,别人如果想使用,和类库是一样的,需要提供group:artifactId:version,publishing{}标签里的就是上传至本地仓库时的版本信息。...使用本地配置的gradle和groovy版本; 创建文件结构 在src/main/groovy目录下创建包名,插件类。...使用插件 使用插件,首先需要在buildscript{}里加上仓库和classpath, buildscript { repositories { mavenLocal()

    3K60

    从精准化测试看ASM在Android中的强势插入-Gradle插件

    新版本的Gradle插件结构已经和之前的不太一样了,新版本的Gradle插件不再需要resources目录来申明插件的入口meta-info文件,而是直接写在了build.gradle里面,类似这样。...sourceCompatibility = 1.8 targetCompatibility = 1.8 发布 Gradle Plugin的前两种使用方式,都不用发布插件,可以直接使用,但大部分情况下,...一般来说,我们会使用本地Maven库来调试插件,借助Gradle的maven-publish插件,我们可以和方便的发布插件到本地Maven库。...使用 在使用插件的项目根目录Gradle文件中,指定访问mavenLocal,同时,使用groupId、artifactId和version组成对插件的引用,如下所示。...Gradle插件是我们后续做字节码修改的基础,一定要熟练掌握插件的开发和调试,这样才能避免后续在开发字节码插件的时候遇到各种插件问题而不能专心于字节码开发。

    1.1K40

    我做了款组件上传的插件

    做这款插件确实有点吃饱了没事干的嫌疑,毕竟 maven-publish 已经提供了很好的支持,但一想到每次都要写一遍那一大段的 publishing 又会觉得,能省几行代码是几行代码,也看过其他人将 publishing...,顺便也总结一下,最后再说一下如何接入这款插件。...后来想到曲线救国的方式,java-lib 这个组件不是也要对外发布嘛,那我直接读取 java-lib 的 build.gradle 中的 GAV 不也可以嘛,所以,这个地方又判断了下 dependency...} } 二、依赖插件 1、上传到 github 在模块工程的 build.gradle 中依赖插件: plugins { id 'com.android.library' // 配置上传到...= "" } 2、上传到 maven 在模块工程的 build.gradle 中依赖插件: plugins { id 'com.android.library' // 配置上传到

    1K40

    使用gradle插件发布项目到nexus中央仓库

    但是这个插件存在一个小问题: 由于Gradle发布过程中的技术限制,因此需要使用启发式技术来跟踪隐式创建的staging存储库,对于给定状态的多个存储库,通常会发布失败。...插件的使用 在gradle中使用该插件很简单,首先需要引入这个插件: plugins { id("io.github.gradle-nexus.publish-plugin") version...下面是两个分别使用groovy和Kotlin的具体的例子: Groovy DSL plugins { id "java-library" id "maven-publish" id...首先定义的nexusPublishing { repositories { ... } } 会拦截所有子项目的 maven-publish 插件,用来修改发布地址。...在多项目构建中,所有拥有相同nexusUrl 的子项目,将会使用同样的staging仓库。

    1.4K40

    【错误记录】自定义 Gradle 插件报错 ( Could not find implementation class x for plugin x specified in jar:file )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 参考 【Android Gradle 插件】自定义 Gradle 插件模块 ④ ( META-INF 中声明自定义插件的核心类 | 在应用中依赖本地...Maven 仓库中的自定义 Gradle 插件 ) 系列博客 , 自定义 Gradle 插件 ; import org.gradle.api.Plugin import org.gradle.api.Project...Maven 仓库中 , 发布配置如下 : // 指定自定义 Gradle 插件的分组 group 'kim.hsl.plugin' // 指定自定义 Gradle 插件的版本号 version '0.1...' // 自定义 Gradle 插件的名称 , 默认为工程名 // 也可以在 publishing / publications 脚本块中 自己指定 // 用于将 插件上传到 远程仓库 或者 本地仓库...中 apply plugin: 'maven-publish' // 发布到 远程/本地仓库 相关配置 publishing { publications { // plugin

    68410

    使用gradle插件发布项目到nexus中央仓库

    但是这个插件存在一个小问题: 由于Gradle发布过程中的技术限制,因此需要使用启发式技术来跟踪隐式创建的staging存储库,对于给定状态的多个存储库,通常会发布失败。...插件的使用 在gradle中使用该插件很简单,首先需要引入这个插件: plugins { id("io.github.gradle-nexus.publish-plugin") version...下面是两个分别使用groovy和Kotlin的具体的例子: Groovy DSL plugins { id "java-library" id "maven-publish" id...首先定义的nexusPublishing { repositories { ... } } 会拦截所有子项目的 maven-publish 插件,用来修改发布地址。...在多项目构建中,所有拥有相同nexusUrl 的子项目,将会使用同样的staging仓库。

    89320

    使用gradle插件发布项目到nexus中央仓库

    但是这个插件存在一个小问题: 由于Gradle发布过程中的技术限制,因此需要使用启发式技术来跟踪隐式创建的staging存储库,对于给定状态的多个存储库,通常会发布失败。...插件的使用 在gradle中使用该插件很简单,首先需要引入这个插件: plugins { id("io.github.gradle-nexus.publish-plugin") version...下面是两个分别使用groovy和Kotlin的具体的例子: Groovy DSL plugins { id "java-library" id "maven-publish" id...首先定义的nexusPublishing { repositories { ... } } 会拦截所有子项目的 maven-publish 插件,用来修改发布地址。...在多项目构建中,所有拥有相同nexusUrl 的子项目,将会使用同样的staging仓库。

    1.7K40
    领券