Spring Boot - 如何战争包凭据文件?

时间:2015-11-08 10:37:06

标签: java spring spring-boot gmail-api

我正在使用gmail API。当我打包我的应用程序时,我的client_secrets.json和凭证文件不在里面。我如何确保它们可供使用?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Maven或Gradle,则需要将它们放入/src/main/resources/client_secrets.json。 (不要进入项目的根文件夹!)

然后他们在里面'罐子。

然后你可以加载传递给GoogleClientSecrets,如下所示:

InputStream in = XXX.class.getResourceAsStream("/client_secrets.json");
GoogleClientSecrets clientSecrets =
        GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));

XXX您应该用您的班级名称替换。谷歌正在快速启动中使用相同的功能。请参阅:https://developers.google.com/gmail/api/quickstart/java第3步。

关于您的评论的更新:

你放在/src/main/resources内的所有东西都在" root"你的战争文件。这意味着它们位于类路径的根目录中。您可以通过类加载器(而不是FileInputStream )访问所有这些内容,如下所示:

XXX.class.getResourceAsStream("/folder/filename");

您提到的FileInputStream通常仅用于访问war

以外的文件

您对InputStream in = new FileInputStream("src/main/resources/credentials/gmail/client_secret.json");的建议仅在您的IDE中有效,因为文件夹src/main/resources确实存在。如上所述,当您将其打包为war时,src/main/resources的内容会移至war的根目录。