You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gradle中为所有Library模块统一配置输出与发布规则?

解决方案

不需要重复编写代码,你可以通过以下步骤实现配置复用:

步骤1:创建通用配置脚本

在项目根目录的gradle文件夹下新建一个名为library-publishing.gradle的文件,将你原来的配置代码粘贴进去:

android.libraryVariants.configureEach { variant ->
    variant.outputs.configureEach {
        if (variant.buildType.name == "release") {
            outputFileName = "${project.name}-${project.versionName}.aar"
        } else {
            outputFileName = "${project.name}-${project.versionName}-${variant.buildType.name}.aar"
        }
    }
}

project.getGradle().getTaskGraph().whenReady {
    tasks.withType(GenerateMavenPom.class).tap {
        configureEach {
            destination = file("$buildDir/outputs/aar/${project.name}-${project.versionName}.pom")
        }
    }
}

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                groupId = project.group
                artifactId = project.name
                version = project.versionName
            }
        }
    }
}

步骤2:在根build.gradle中仅给Library模块应用该脚本

修改根目录的build.gradle文件,使用subprojects块过滤出Android Library模块,再应用上面的通用脚本:

subprojects { subproject ->
    // 判断当前子项目是否是Android Library模块
    subproject.plugins.withId('com.android.library') {
        apply from: "${rootProject.projectDir}/gradle/library-publishing.gradle"
    }
}

这样配置后,只有lib1、lib2这类应用了com.android.library插件的模块会加载通用配置,app模块(应用的是com.android.application插件)不会被影响,也就不会出现报错。

可选:添加脚本应用防护

如果你担心脚本被误应用到非Library项目,也可以在library-publishing.gradle开头加一层防护:

// 确保当前项目是Android Library
if (!plugins.hasPlugin('com.android.library')) {
    throw new IllegalStateException("This script should only be applied to Android Library modules")
}

// 后面放原来的配置代码...

内容的提问来源于stack exchange,提问作者Yegie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:14:54