首页
学习
活动
专区
工具
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. 运行发布命令。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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.3K30

详解如何使用Android Studio开发Gradle插件

这三个App有一个共同地方就是大量使用Gradle这个强大构建工具,除了携程框架外,另外两个都发布了独立Gradle插件提供自动化构建插件,或者生成热修复补丁。...Gradle相关语法 本篇文章不会详细说明Gradle相关语法,如果要学习gradle相关东西,请查看Gradle for Android Gradle插件开发 Gradle插件使用Groovy进行开发...Android Studio其实除了开发Android App外,完全可以胜任开发Gradle插件这一工作,下面来讲讲具体如何开发。 首先,新建一个Android项目。...发布到本地仓库 接着,我们需要将插件发布到maven中央仓库,我们将插件发布到本地仓库就好了,在module项目下buidl.gradle文件中加入发布代码。...发布到本地maven仓库后,我们就使用它,在叫appandroid项目下gradle.build文件中加入 buildscript { repositories { maven {

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

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

    55030

    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.4K40

    使用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.6K30

    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.6K20

    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.4K20

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

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

    80660

    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.3K10

    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 组成资源流。

    38010

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

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

    2.9K60

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

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

    1K40

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

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

    1.4K40

    我做了款组件上传插件

    做这款插件确实有点吃饱了没事干嫌疑,毕竟 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...下面是两个分别使用groovyKotlin具体例子: Groovy DSL plugins { id "java-library" id "maven-publish" id...首先定义nexusPublishing { repositories { ... } } 会拦截所有子项目的 maven-publish 插件,用来修改发布地址。...在多项目构建中,所有拥有相同nexusUrl 子项目,将会使用同样staging仓库。

    86020

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

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

    1.6K40

    【错误记录】自定义 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

    62810
    领券