Gradle 多项目 - 在项目之间共享源代码
Gradle multi project - sharing source code between projects
在 gradle 多项目 (java) 中,是否可以共享源代码以便每个项目都可以访问它并对其进行编译?
例如,子项目 'mouse'、'cat'、'dog',每个子项目包含一个 java class - Mouse.java
Cat.java
和 Dog.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
}
在 gradle 多项目 (java) 中,是否可以共享源代码以便每个项目都可以访问它并对其进行编译?
例如,子项目 'mouse'、'cat'、'dog',每个子项目包含一个 java class - Mouse.java
Cat.java
和 Dog.java
分别。这些 classes 中的每一个都扩展了 Animal.java
.
需要注意的是,在构建任何给定的子项目(例如,'mouse')时,它会定义一些编译时依赖项(来自 Maven Central),并且需要 我知道这个例子不是很直观(因为 Animal 应该足够通用,可以独立编译)。这是我能找到的最好的模拟我试图解决的难以解释的场景。 在 Gradle 中可以做到吗? 谢谢。Animal.java
得到使用那些依赖项 编译。其他项目也是如此。所以,我无法编译和打包 Animal.java
,然后将该 jar 用作 3 个项目的依赖项。 Animal 必须与依赖项目的源代码一起重新编译。结果应该是 mouse.jar、cat.jar 和 dog.jar,每个都在它们各自的项目构建目录中(像往常一样)并且每个还包含它们的 Animal.class.[=17 版本=]
使用 sourceSets 解决了这个问题。将父项目主源集添加到子项目中:
例如,添加到项目 'mouse' 的 build.gradle
:
sourceSets {
main.java.srcDir project(':animal').sourceSets.main.java
}