我将用Kotlin编写的pancakes
基于Gradle的库分为多个模块:pancakes-core
,pancakes-addon1
,...,pancakes-addonN
。 addon
个包括core
一个。
现在,大多数用户都不在乎,只需要包含所有依赖项的默认配置即可。但是他们将不得不编写样板:
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
还不够。
答案 0 :(得分:1)
是的,它可能并且接近您的预期外观。
添加一个单独的子项目,例如:pancakes-simple
,并像对常规模块一样配置其发布。
然后仅添加您要公开的依赖项。如果您没有使用java-library
插件,请使用compile
配置:
project(":pancakes-simple") {
dependencies {
compile(":pancakes-core")
compile(":pancakes-addon1")
...
compile(":pancakes-addonN")
}
}
与implementation
依赖项不同,如果它们对pancakes-simple
模块添加了依赖项,则这些依赖项将在使用者的编译类路径上可用。
使用java-library
插件,api
依赖项也应该起作用
答案 1 :(得分:0)
java-library
Gradle插件是从当前模块转发api
依赖项所必需的。这就是将所有模块打包到一个模块中的方法:
java-library
插件(并删除java
):pancakes-simple
一样依赖于所有其他模块的模块