任务generateMetadataFileForReleasePublication使用任务androidSourcesJar的此输出,而不声明显式或隐式依赖项

use*_*924 5 android maven-plugin android-gradle-plugin

以下命令无法发布我的 Android 库:

./gradlew :my_sdk:publish --stacktrace
Run Code Online (Sandbox Code Playgroud)

这是我看到的错误:

Reason: Task ':my_sdk:generateMetadataFileForReleasePublication' uses this output of task ':my_sdk:androidSourcesJar' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed.
Run Code Online (Sandbox Code Playgroud)

我的文件中与发布相关的内容build.gradle如下:

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

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                groupId mGroupId
                artifactId mArtifactId
                version mVersionName

                from components.release

                artifact androidSourcesJar

                pom {
                    name = mLibraryName
                    description = mLibraryDescription
                }
            }
        }
        repositories {
            maven {
                name = "GitHubPackages"
                url = uri("https://maven.pkg.github.com/HIDDEN_FOR_STACKOVERFLOW")
                credentials {
                    username = System.getenv("GPR_USER")
                    password = System.getenv("GPR_KEY")
                }
            }
        }
    }
}

// Assembling should be performed before publishing package
publish.dependsOn assemble
Run Code Online (Sandbox Code Playgroud)

它工作正常,直到我更新了项目中的依赖项(gradle 插件等)。

自从收到错误后,我尝试afterEvaluate按如下方式更新块:

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                ....
                // added this line here
                generateMetadataFileForReleasePublication.dependsOn androidSourcesJar
            }
        }
Run Code Online (Sandbox Code Playgroud)

现在在 Github Actions 中我遇到以下问题:

失败:构建失败并出现异常。

任务:my_module:generateMetadataFileForReleasePublication

任务:my_module:publishReleasePublicationToGitHubPackagesRepository 失败

  • 什么地方出了错:

任务“:my_module:publishReleasePublicationToGitHubPackagesRepository”执行失败。存储配置缓存时发现 0 个问题。

“GitHubPackages”凭据缺少以下 Gradle 属性:

- GitHubPackagesUsername
- GitHubPackagesPassword
Run Code Online (Sandbox Code Playgroud)

小智 0

我遇到了同样的问题,gradlew 打印了这个注释:

可能的解决方案:

  1. 将任务“androidSourcesJar”声明为“generateMetadataFileForReleasePublication”的输入。
  2. 使用 Task#dependsOn 声明对“generateMetadataFileForReleasePublication”中“androidSourcesJar”的显式依赖。
  3. 使用 Task#mustRunAfter 声明对“generateMetadataFileForReleasePublication”中“androidSourcesJar”的显式依赖。

所以我只是将这一行添加到我的模块的 build.gradle 中,它似乎工作正常:

afterEvaluate {
    generateMetadataFileForReleasePublication.dependsOn androidSourcesJar
}
Run Code Online (Sandbox Code Playgroud)