Spring属性文件中资源的引导参考文件位置

时间:2017-10-23 11:43:53

标签: java spring-boot

我有一个使用Google Pub Sub API的Spring Boot应用程序。我需要使用文件credentials.json注入Google凭据和其他属性。我将文件放在我的src/main/resources中(否则,它不会将文件放在构建的jar中),如下所示:

spring.cloud.gcp.credentials.location=file:src/main/resources/credentials.json

但是,当我构建jar时,此文件将放在根目录中,并且此路径不再有效。所以我能够从Eclipse运行我的应用程序,因为到那个时候,该文件仍然在我的资源目录中,但我不能在构建之后将其作为独立的jar运行,因为路径突然只是file:credentials.json

是否有一些简单的方法如何将路径指定为相对路径,以便它在IDE和运行我的jar时都可以工作?我可以通过env注入路径。变量,但我只会在绝对必要的情况下这样做。

1 个答案:

答案 0 :(得分:4)

如果您使用classpath前缀,则Spring会在您的课堂上查找该文件。

如果您将文件放在src/main/resources中,那么默认情况下,Maven会将其复制到类路径的根目录,然后可以按如下方式进行寻址:

spring.cloud.gcp.credentials.location=classpath:credentials.json

这是否应该成立......

  • 您正在IDE中运行;您的IDE的Maven集成会将文件从src/main/resources复制到类路径的根目录 - 通常是target/classes
  • 您正在运行一个内置的JAR; Maven会将文件从src/main/resources复制到您的JAR
  • 的根目录