Spring 引导 - 如何 war 打包凭证文件?

Spring Boot - how to war package credential files?

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

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

那么它们就是'inside'罐子。

然后你可以像这样将它加载到 GoogleClientSecrets

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

XXX 你应该替换成你的 class 名字。 Google 在他们的快速入门中使用了相同的内容。请参阅:https://developers.google.com/gmail/api/quickstart/java 步骤 3。

关于您评论的更新:

您放置在 /src/main/resources 中的所有内容都在您的 war 文件的 "root" 中。这意味着它们位于您的 class 路径的根目录中。您可以通过 classloader( 而不是 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.

的根目录中