Java 属性文件中资源中的Spring引导参考文件位置
我有一个使用GooglePubSubAPI的SpringBoot应用程序。我需要使用文件Java 属性文件中资源中的Spring引导参考文件位置,java,spring-boot,Java,Spring Boot,我有一个使用GooglePubSubAPI的SpringBoot应用程序。我需要使用文件credentials.json注入Google凭据和其他属性。我将文件放在我的src/main/resources中(否则,它将不会将文件放在构建的jar中),如下所示: spring.cloud.gcp.credentials.location=file:src/main/resources/credentials.json 但是,当我构建jar时,这个文件被放在根目录中,并且这个路径不再有效。因此,我
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注入路径。变量,但我只会在绝对必要的情况下这样做。如果您使用
类路径
前缀,那么Spring将在您的classapth上查找该文件
如果您将文件放入src/main/resources
中,那么默认情况下,Maven会将其复制到类路径的根目录中,然后它将可寻址,如下所示:
spring.cloud.gcp.credentials.location=classpath:credentials.json
无论
- 您正在IDE中运行;IDE的Maven集成将把文件从
复制到类路径的根目录中,通常是src/main/resources
target/classes
- 您正在运行一个构建的JAR;Maven将文件从
复制到JAR的根目录src/main/resources