我有一个使用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注入路径。变量,但我只会在绝对必要的情况下这样做。
答案 0 :(得分:4)
如果您使用classpath
前缀,则Spring会在您的课堂上查找该文件。
如果您将文件放在src/main/resources
中,那么默认情况下,Maven会将其复制到类路径的根目录,然后可以按如下方式进行寻址:
spring.cloud.gcp.credentials.location=classpath:credentials.json
这是否应该成立......
src/main/resources
复制到类路径的根目录 - 通常是target/classes
src/main/resources
复制到您的JAR