Gradle 多项目 - 在项目之间共享源代码

Gradle multi project - sharing source code between projects

在 gradle 多项目 (java) 中,是否可以共享源代码以便每个项目都可以访问它并对其进行编译?

例如,子项目 'mouse'、'cat'、'dog',每个子项目包含一个 java class - Mouse.java Cat.javaDog.java 分别。这些 classes 中的每一个都扩展了 Animal.java.

需要注意的是,在构建任何给定的子项目(例如,'mouse')时,它会定义一些编译时依赖项(来自 Maven Central),并且需要 Animal.java 得到使用那些依赖项 编译。其他项目也是如此。所以,我无法编译和打包 Animal.java,然后将该 jar 用作 3 个项目的依赖项。 Animal 必须与依赖项目的源代码一起重新编译。结果应该是 mouse.jar、cat.jar 和 dog.jar,每个都在它们各自的项目构建目录中(像往常一样)并且每个还包含它们的 Animal.class.[=17 版本=]

我知道这个例子不是很直观(因为 Animal 应该足够通用,可以独立编译)。这是我能找到的最好的模拟我试图解决的难以解释的场景。

在 Gradle 中可以做到吗?

谢谢。

使用 sourceSets 解决了这个问题。将父项目主源集添加到子项目中:

例如,添加到项目 'mouse' 的 build.gradle

sourceSets {
    main.java.srcDir project(':animal').sourceSets.main.java
}