我想设置gradle多模块项目构建配置,以便在构建最终jar时可以动态决定要使用哪些模块。
项目很大,由更多模块组成,因此我将使用简单的示例来说明我的问题。
假设我们有4个模块,模块A,B,C和D:
-模块A用于配置并将所有内容粘合在一起。
-模块B包含域逻辑并具有一些接口。
-模块C和D提供模块中声明的接口的不同实现
B。
因此,在其他构建jar文件中,我们必须在build.gradle中为模块A指定依赖项,因为我们有2种实现,并且我们只希望在构建中存在1种实现,所以我们必须注释模块C或D依赖项,并且最终看起来像这样:
...
implementation project(':B')
implementation project(':C')
// implementation project(':D') - commented out, in other to use module C
...
这有效,在这个简单的示例中,它工作不多,但是在实际项目中,我们有多个模块声明接口(如A)和实现这些接口的多个模块,并且可以根据具体的环境将它们全部混合在一起构建应该运行,所以我觉得这个解决方案不够好。
最后我的问题:
是否可以通过以下方式设置我的gradle项目,以便在调用gradle build
时提供我想用作参数的模块,或者是否有其他解决方案可以使它更具动态性?< / strong>
我已经读过gradle multi-module documentation,但在该主题上一无所获,我也搜索了类似的问题,只找到了这个Controlling gradle runtime dependencies with build parameter,但是那里的解决方案无法解决我的问题。