将多模块Gradle库打包到单个模块中

我把我在Kotlin写的基于Gradle的煎饼库分成了多个模块:煎饼 – 核心,煎饼 – 插件1,…,煎饼 – 插件.插件包括核心插件.

现在,大多数用户不应该关心并且只想要包含所有依赖项的默认配置.但他们必须编写样板:

dependencies {
    implementation("pancakes:pancakes-core")
    implementation("pancakes:pancakes-addon1")
    ...
    implementation("pancakes:pancakes-addonN")
}

这对我来说是不行的.我可能必须合并所有模块,尽管我只花了一些时间将一些可替换的功能分支到他们自己的模块中.

除非!有一种方法可以编写如下内容:

project(":pancakes-simple") {
    dependencies {
        autoForwardedApi(":pancakes-core")
        autoForwardedApi(":pancakes-addon1")
        ...
        autoForwardedApi(":pancakes-addonN")
    }
}

不幸的是,api是不够的.

最佳答案 是的,这是可能的,接近你认为的样子.

例如,添加一个单独的子项目:pancakes-simple并按照您的普通模块配置其发布.

然后只需添加您希望它公开的依赖项.如果您没有使用java-library插件,请使用编译配置:

project(":pancakes-simple") {
    dependencies {
        compile(":pancakes-core")
        compile(":pancakes-addon1")
        ...
        compile(":pancakes-addonN")
    }
}

与实现依赖项不同,如果它们在pancakes-simple模块上添加依赖项,那么它们将在使用者的编译类路径中可用.

使用java-library插件,api依赖项也应该有效

点赞