在相互依赖的项目的多项目构建中只编译 java 类

Only compile java classes in multi-project builds for inter-dependent projects

我的问题涉及项目间依赖关系和生成的 JAR

项目结构类似于此

root
 -- :a
 -- :b
 -- :c
 -- :d

依赖如下(:d没有依赖)

a -> b -> c -> d

编译 :d 包含 :d 中的所有 *.class 文件。编译 :c 包含为 :d:c 生成的源代码。到目前为止,一切都很好。

但是,当我编译 root 时,它会为 :d 生成一个 JAR,然后为 :c 编译并生成一个 jar,其中包括 CLASS 个文件 :d。这一直到顶部。

root项目仍将仅包含一次已编译的子项目,但 build\libs 文件夹也将包含所有中间 JAR。

我 运行 使用 --profile 构建并注意到 JAR 的打包在整个构建过程中占用了相当多的时间。

依赖项目包含在它们的相关 build.gradle 文件中,如下所示(:b:c 的示例)

项目 C

dependencies { compile project(':d') }

项目 B

dependencies { compile project(':c') }

实际上整个项目由大约100个子项目组成,并且有大量相互依赖的项目。

有什么方法可以编译 CLASS 文件 而无需 生成 JAR?

如有任何帮助,我们将不胜感激。

引用的可能重复的问题与多项目构建或项目间依赖关系无关。

最后只好手动将所有模块添加到类路径中,然后编译整个模块。编译时间过长。

我们正在考虑很好地解耦所有内容,让每个模块成为一个可以从内部工件导入的库。