繁体   English   中英

如何将 test 和 main 的属性注入多模块 gradle spring boot 项目的每个子模块?

[英]How can I inject properties for test and for main into each sub module of a multi-module gradle spring boot project?

这是我项目的结构。

  • 父级不包含代码。
  • 模块 child1 是一个 Spring Boot 应用程序。
  • 模块 child2、child3 是 jars 库。
  • child1 依赖于 child2 和 child3
parent
      | build.gradle
      | settings.gradle
      | [no code]
child1
      | build.gradle
      | src/
          | main/
              | java/
              | resources/
                  | application.properties
          | test/
              | java/
              | resources/
                  | application.properties
child2
      | build.gradle
      | src/
          | main/
              | java/
          | test/
              | java/
child3
      | build.gradle
      | src/
          | main/
              | java/
          | test/
              | java/

我有一个名为“datapath”的属性,我想将它注入到每个模块的类中。
“数据路径”有两种可能的值,一种用于测试,一种用于生产。
我在 child1/src/main/resources/application.properties 中设置生产值,在 child1/src/test/resources/application.properties 中设置测试值

我曾尝试创建配置类并指定 PropertySource。 但结果是,虽然 child1 在 test 和 main 中都选择了正确的应用程序属性,但 spring 在其他模块中没有找到它们。

你能为我提出一个策略来实现这个吗?

特别是:

  1. child1 中的测试被注释为 SpringBootTest 但最好 child2 和 child3 不应该依赖于 spring boot(只是用于自动装配的 spring 框架)
  2. 我希望能够在子模块中的配置类上使用 @Value 注释。
  3. 我如何指示 spring 从 child1 模块中的 application.properties 解析这些属性,使用 src/test/resources 中的一个进行测试,使用 src/main/resources 中的一个进行生产?
  4. 由于我选择了一个非常“经典”的结构,我希望能够用尽可能少的移动部件来实现这一点。 特别是我不想在注释中明确指定路径。

我认为在child2child3需要application.properties只为测试。 然后,在测试你可以使用@TestPropertySource在那里你可以点相对路径属性文件child1或添加datapath明确:

@TestPropertySource(properties = { "datapath=value" })
public class Child2Test {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM