将“Gradle”和“Android Gradle Plugin”从版本 7 更新到版本 8 后无法发布 Android 库

问题描述 投票:0回答:1

我有一个 Android 库项目,它使用版本 7 的“Gradle”和“Android Gradle 插件”(准确地说分别是版本 7.6.1 和 7.4.2)。

以下是我的图书馆

build.gradle
文件中与发布相关的部分:

plugins {
    id("com.android.library")
    id("maven-publish")
}

task generateSourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    archiveClassifier.set('sources')
}

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                artifact generateSourcesJar

                groupId 'com.tazkiyatech'
                artifactId 'android-utils'
                version '1.0.0'
            }
        }

        repositories {
            maven {
                name = 'BuildFolder'
                url = "${project.buildDir}/repository"
            }
        }
    }
}

我的项目可用的各种

publish...
Gradle 任务工作正常,直到我将项目中的“Gradle”和“Android Gradle 插件”版本升级到版本 8。一旦我升级到版本 8,各种
 publish...
Gradle 任务失败并返回以下错误:

* What went wrong:
A problem was found with the configuration of task ':library:generateSourcesJar' (type 'Jar').
  - Gradle detected a problem with the following location: '/Users/adil/Work/TazkiyaTech/android-utils/library/build/libs/library-sources.jar'.
    
    Reason: Task ':library:generateMetadataFileForReleasePublication' uses this output of task ':library:generateSourcesJar' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed.
    
    Possible solutions:
      1. Declare task ':library:generateSourcesJar' as an input of ':library:generateMetadataFileForReleasePublication'.
      2. Declare an explicit dependency on ':library:generateSourcesJar' from ':library:generateMetadataFileForReleasePublication' using Task#dependsOn.
      3. Declare an explicit dependency on ':library:generateSourcesJar' from ':library:generateMetadataFileForReleasePublication' using Task#mustRunAfter.
    
    For more information, please refer to https://docs.gradle.org/8.2.1/userguide/validation_problems.html#implicit_dependency in the Gradle documentation.

我无法执行错误输出中列出的可能解决方案,因为我无法弄清楚如何在我拥有的

generateSourcesJar
任务和我不拥有的
generateMetadataFileForReleasePublication
任务之间创建依赖关系.

如何解决此错误并使用“Gradle”版本 8 和“Android Gradle 插件”发布我的库?

android-gradle-plugin android-library maven-publish
1个回答
4
投票

自从我将库升级到“Gradle”和“Android Gradle 插件”版本 7 以来,我发现Android Gradle 插件 > 发布你的库 文档中的说明发生了显着变化。

根据最新说明(对于“Gradle”和“Android Gradle 插件”版本 8),我的库的

build.gradle
文件中与发布相关的部分更改为以下内容:

plugins {
    id("com.android.library")
    id("maven-publish")
}

android {
    publishing {
        singleVariant('release') {
            withSourcesJar()
        }
    }
}

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release

                groupId 'com.tazkiyatech'
                artifactId 'android-utils'
                version '1.0.0'
            }
        }

        repositories {
            maven {
                name = 'BuildFolder'
                url = "${project.buildDir}/repository"
            }
        }
    }
}

最重要的变化是我不再需要定义自定义 Gradle 任务来为我的库源生成 Jar。

我整理了一个最小的项目here,它充分演示了如何使用“Gradle”版本 8 和“Android Gradle 插件”发布 Android 库。

© www.soinside.com 2019 - 2024. All rights reserved.