背景
我使用 gradle 编写了一个 spring boot 项目,它工作正常。我想将项目拆分为库(jar),以便我可以重用它们。
这些是要求
- 每个项目都在同级文件夹中,每个文件夹都包含自己的 .git 存储库。
- 多构建项目应位于同级文件夹中,而不是包含子项目的文件夹中。它还包含自己的 .git 存储库。
- 仅用作库 (jar) 的项目具有带有注释的测试
@SpringBootTest
,这些测试应该可以独立运行。 - 用作类库的项目应该作为“瘦 jars”提供给其他项目,而不包括任何依赖项。使用项目需要添加它使用的所有项目累积的任何依赖项。
- 应该可以独立构建每个子项目。对于依赖套件中其他项目的项目,这意味着构建项目将使用它需要的其他项目(jar)的输出,如果该输出尚未准备好,gradle 将首先构建这些项目。
- 应该可以从多项目父级构建所有项目(将解决依赖关系,并且只会进行必要的构建)。
- 使用多项目构建整个套件将创建一个包含父引导 jar 及其所有依赖项的可部署文件夹。
- 我希望能够使用 Intellij 创作项目、编辑和调试上述所有内容。
最小的、可重现的例子
我在这里上传了一个最小的、可重现的示例(reprex):https
://github.com/david-sackstein/multiproject
它包含三个文件夹:
productcommon
是一个带有公共类的罐子ProductFactory
。- productservice 是一个 SpringBoot 应用程序,
@RestController
它在其中一个方法中调用 ProductFactory 的公共方法。productservice 对 productcommon 有项目依赖。 multiproject
是一个 gradle 项目,没有依赖于productcommon
和的代码productservice
- 我相应地在所有三个项目中设置了 build.gradle 和 settings.gradle。
当我构建productservice
它失败 - 显然是因为项目导入productcommon
失败。
此示例中缺少什么或不正确?