-1

背景

我使用 gradle 编写了一个 spring boot 项目,它工作正常。我想将项目拆分为库(jar),以便我可以重用它们。

这些是要求

  1. 每个项目都在同级文件夹中,每个文件夹都包含自己的 .git 存储库。
  2. 多构建项目应位于同级文件夹中,而不是包含子项目的文件夹中。它还包含自己的 .git 存储库。
  3. 仅用作库 (jar) 的项目具有带有注释的测试@SpringBootTest,这些测试应该可以独立运行。
  4. 用作类库的项目应该作为“瘦 jars”提供给其他项目,而不包括任何依赖项。使用项目需要添加它使用的所有项目累积的任何依赖项。
  5. 应该可以独立构建每个子项目。对于依赖套件中其他项目的项目,这意味着构建项目将使用它需要的其他项目(jar)的输出,如果该输出尚未准备好,gradle 将首先构建这些项目。
  6. 应该可以从多项目父级构建所有项目(将解决依赖关系,并且只会进行必要的构建)。
  7. 使用多项目构建整个套件将创建一个包含父引导 jar 及其所有依赖项的可部署文件夹。
  8. 我希望能够使用 Intellij 创作项目、编辑和调试上述所有内容。

最小的、可重现的例子

我在这里上传了一个最小的、可重现的示例(reprex):https
://github.com/david-sackstein/multiproject 它包含三个文件夹:

  1. productcommon是一个带有公共类的罐子ProductFactory
  2. productservice 是一个 SpringBoot 应用程序,@RestController它在其中一个方法中调用 ProductFactory 的公共方法。productservice 对 productcommon 有项目依赖。
  3. multiproject是一个 gradle 项目,没有依赖于productcommon和的代码productservice
  4. 我相应地在所有三个项目中设置了 build.gradle 和 settings.gradle。

当我构建productservice它失败 - 显然是因为项目导入productcommon失败。

此示例中缺少什么或不正确?

4

1 回答 1

0

今天我看到了这篇关于这个主题的优秀帖子: https : //reflectoring.io/spring-boot-gradle-multi-module 由 Tom Hombergs

Tom 还提供了一个很好的例子: https ://github.com/thombergs/buckpal

在与他的架构合作后,我可能会对这个主题有一些后续问题,但目前,我对这个解决方案感到满意。

于 2019-11-20T21:10:27.623 回答