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
.
的根目录中
我正在使用 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
.