Java 如何将test和main的属性注入到多模块gradle spring引导项目的每个子模块中?

Java 如何将test和main的属性注入到多模块gradle spring引导项目的每个子模块中?,java,spring,spring-boot,multi-module,Java,Spring,Spring Boot,Multi Module,这是我项目的结构 父级不包含任何代码 模块child1是一个spring引导应用程序 模块child2、child3是jars库 child1依赖于child2和child3 我有一个名为“datapath”的属性,我想将它注入到每个模块中的类中。 “数据路径”有两个可能的值,一个用于测试,一个用于生产。 我把生产价值设定在 child1/src/main/resources/application.properties 和中的测试值 child1/src/test/resources/ap

这是我项目的结构

  • 父级不包含任何代码
  • 模块child1是一个spring引导应用程序
  • 模块child2、child3是jars库
  • child1依赖于child2和child3
我有一个名为“datapath”的属性,我想将它注入到每个模块中的类中。
“数据路径”有两个可能的值,一个用于测试,一个用于生产。
我把生产价值设定在 child1/src/main/resources/application.properties 和中的测试值 child1/src/test/resources/application.properties

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

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

特别是:

  • child1中的测试是带注释的SpringBootTest,但child2和child3最好不依赖于SpringBoot(仅用于自动布线的spring框架)
  • 我希望能够在子模块中的配置类上使用@Value注释
  • 如何引导spring从child1模块中的application.properties解析这些属性,使用src/test/resources中的属性进行测试,使用src/main/resources中的属性进行生产
  • 由于我选择了一个非常“经典”的结构,我希望能够用尽可能少的运动部件来实现这一点。特别是,我不希望必须在注释中显式指定路径

  • 我假设在
    child2
    child3
    中,您只需要
    application.properties
    进行测试。然后在测试中,您可以使用
    @TestPropertySource
    ,在这里您可以指向
    child1
    中属性文件的相对路径,或者显式地添加
    datapath

    @TestPropertySource(属性={“数据路径=值”})
    公共班级儿童测验{
    
    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/