Micronaut 属性 注入不适用于 Gradle 多项目构建

Micronaut property injection does not work with Gradle multi-project build

我正在尝试使用 Gradle 多项目构建的共享包来设置 Micronaut (1.1.0.BUILD-SNAPSHOT) 项目,这样我就可以将通用逻辑放在一个地方。

我在为库创建 属性 文件时遇到了问题。我在 application.yml 中放置了一些特定于库的属性,但看起来它们没有被推送到应用层:

lib/src/main/java/lib/CommonSingeton.java

@Singleton
public class CommonSingleton {

  public CommonSingleton(
    @Value("${lib.testProperty}") String value
  ) {
    System.out.println(value);
  }
}

lib/src/main/resources/application.yml

lib:
  testProperty: test

app/src/main/java/app/AppController.java

@Controller("/app")
public class AppController {

  @Inject
  private CommonSingleton commonSingleton;

  @Get(produces = MediaType.TEXT_PLAIN)
  public String index() {
    return "Hello World";
  }
}

错误是:

Unexpected error occurred: Failed to inject value for parameter [value] of class: lib.CommonSingleton

Message: Error resolving property value [${lib.testProperty}]. Property doesn't exist
Path Taken: AppController.commonSingleton --> new CommonSingleton([String value])
io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [value] of class: lib.CommonSingleton

完整示例可用 on Github

目前它被设计为只读取一个 application.yml。如果您要从 app 中删除文件,它将从 lib 中读取。你可以提交一个问题让我们知道这是你想要的。 https://github.com/micronaut-projects/micronaut-core/issues