gradle AGP 8.1导致错误:无效的发布“release”:具有相同扩展名和分类器的多个工件('jar. asc',' sources ')

qjp7pelc  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(238)

我在MavenCentral部署了一个图书馆几年。AGP 8.1.0的最新更新破坏了该过程,导致错误:
无法将发布“release”发布到存储库“mavenLocal”
无效的发布“release”:具有相同扩展名和分类器('jar.asc',' sources')的多个工件。`
据我所知,由于某种原因,新的AGP添加了unobfuscated'sources.jar',它与我的(旧的)冲突
我的代码(相关部分)是:

tasks.register('androidSourcesJar', Jar) {
    archiveClassifier.set('sources')
    // some more code
}

然后在出版物本身:

// Applies the component for the envProdRelease build variant.
 from components.envProdRelease

 // Add the sources and Javadoc JARs to the publication
 artifact androidSourcesJar // <- this causing the error

如果我将AGP恢复到7.4.2版本,一切都按预期工作。如果我从发布中删除工件androidSourcesJar,脚本将发布具有非模糊源的库,这对我来说是完全不可接受的。我正在使用'maven-publish'插件和nexus-publish-plugin

kb5ga3dv

kb5ga3dv1#

经过几个小时的努力,我找到了解决这个问题的简单方法。您所需要做的就是强制maven-publish插件不创建sources.jar。为此,您需要修改MavenPublication采用的组件(除非您想创建自己的Gradle任务集),因此我的问题的解决方案是:

android{
    publishing {
        //note the variant name should be equal to the one that Maven takes
        singleVariant("envProdRelease") {
            // if you don't want sources/javadoc, comment out these lines
            //withSourcesJar()
            //withJavadocJar()
        }
    }
}

现在,您可以使用自己的任务创建sources.jar和/或javadoc.jar。

相关问题