添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
一直单身的匕首  ·  Project cannot be ...·  23 小时前    · 
英姿勃勃的绿豆  ·  Gradle 7.3 Release Notes·  23 小时前    · 
虚心的橙子  ·  Gradle & Third-party ...·  23 小时前    · 
痴情的拖把  ·  Synchronize Gradle ...·  23 小时前    · 
成熟的刺猬  ·  Buildship plugin does ...·  23 小时前    · 
胡子拉碴的刺猬  ·  Michael Stepner | ...·  2 月前    · 
率性的蚂蚁  ·  A-Z Databases·  3 月前    · 
刚失恋的煎饼果子  ·  Spring Boot ...·  6 月前    · 

伪斜杠青年

人们总是混淆了欲望和理想

Gradle 7.X Maven publish 适配

就在前几天,Android studio 更新到了 4.2 (瞄的 我也不知道到底几点几,2020.3.1),伴随着正式的JDK 11环境以及 Gradle 7.0,迎来了一系列的 gradle 编译问题,当然,这里主要讨论 maven 发布相关的变更与适配。

这里直接抛出主要问题:以前的 maven plugin 已经被废弃,带来的是 maven-publish plugin 。从代码层面讲就是:

apply plugin: 'maven'

变成了:

apply plugin: 'maven-publish'

同时,相关脚本也进行了变更,直接贴上最新的脚本代码:

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                 from components.release 
                groupId = MAVEN_GROUP_ID
                artifactId = MAVEN_ARTIFACTID
                version = MAVEN_VERSION
        repositories {
            maven {
                allowInsecureProtocol true
                name = "nexus"
                url = MAVEN_RELEASE_URL
                credentials {
                    username = MAVEN_USERNAME
                    password = MAVEN_PASSWORD
}

这里大写的属性均为 gradle.properties 中定义的与 maven 发布相关的变量,通过命名应该很容易知道。

主要说两点:

  • 对于非 https 的仓库地址,需要使用 allowInsecureProtocol 字段,包括引用该仓库的地方
  • 对于需要上传的 maven 仓库,需要显式指定 name,因为在编译后,会生成相关任务,比如这样:

另外,对于 release(MavenPublication) 节点中 from components. release 字段,是有含义的~ 官网描述如下:

换成中文说就是:一个 module 的不同变种。

而对于 Android 来说,一般情况下有两种 lib,一种是 比如 gradle 插件的 Jar lib,另一种为 资源库类型的 AAR lib,这里分开说明。

  • Jar lib

纯 jar 包,也就是 gradle 配置为: apply plugin : 'java-library' 类型的 module,直接按照官方的例子进行配置:

 from components.java
  • AAR lib

对于 Android 特有的lib,即 gradle 配置为: apply plugin : 'com.android.library' 类型的 module,则需要根据 module 中的buildTypes 进行配置,比如:

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