如何从 git 隐藏 JDBC 连接凭据?
How to hide JDBC connection credentials from git?
我从事几个小型 Java 项目(使用 Maven+NetBeans)并将它们存储在 a public git repository。
我想在某些项目中使用 PostgreSQL JDBC,但不想制作我的数据库的连接凭据 public。
肯定还有其他开发人员遇到过类似的问题。
请分享您的解决方案。
可能可以将数据库 name/user/password 放入 *.properties
文件中,然后在 git 存储库中忽略它,但将其保留在工作区中?如何在我的 Java 项目中加载该文件?
您可以将该文件添加到您的 .gitignore 中,但就像您所说的那样将其保留在工作副本中,我真的看不到这里的问题。
就这样
echo myprops.properties >> .gitignore
就加载这些文件而言,您可以获得更多信息here。他们建议这样使用它们:
Properties defaultProps = new Properties();
FileInputStream in = new FileInputStream("defaultProperties");
defaultProps.load(in);
in.close();
然后您可以使用 getProperty(String key)
和 getProperty(String key, String default)
访问代码中的属性
我见过人们做的另一件事是编写 git 预提交 hook 并使用 sed
替换文件中的凭据,但我没有任何有这方面的经验。
另一种不同于@dbt 所说的使用属性文件的方法是使用环境变量。
所以当你启动应用程序时,你使用把环境变量放到命令中。通常应用程序将优先加载 属性 文件。
例如
它将检查属性文件并加载到所有 属性。
如果环境变量存在,它将覆盖以前的值。
其他人会有多个 属性 文件,这些文件将由特定环境变量(例如,暂存、开发、生产)的值加载。
这样您就可以为特定环境保留多个配置。
相关问题:
What is the best way to manage configuration data
另一种方法是使用 ~/.pgpass
来存储凭据。
我从事几个小型 Java 项目(使用 Maven+NetBeans)并将它们存储在 a public git repository。
我想在某些项目中使用 PostgreSQL JDBC,但不想制作我的数据库的连接凭据 public。
肯定还有其他开发人员遇到过类似的问题。
请分享您的解决方案。
可能可以将数据库 name/user/password 放入 *.properties
文件中,然后在 git 存储库中忽略它,但将其保留在工作区中?如何在我的 Java 项目中加载该文件?
您可以将该文件添加到您的 .gitignore 中,但就像您所说的那样将其保留在工作副本中,我真的看不到这里的问题。 就这样
echo myprops.properties >> .gitignore
就加载这些文件而言,您可以获得更多信息here。他们建议这样使用它们:
Properties defaultProps = new Properties();
FileInputStream in = new FileInputStream("defaultProperties");
defaultProps.load(in);
in.close();
然后您可以使用 getProperty(String key)
和 getProperty(String key, String default)
我见过人们做的另一件事是编写 git 预提交 hook 并使用 sed
替换文件中的凭据,但我没有任何有这方面的经验。
另一种不同于@dbt 所说的使用属性文件的方法是使用环境变量。
所以当你启动应用程序时,你使用把环境变量放到命令中。通常应用程序将优先加载 属性 文件。
例如 它将检查属性文件并加载到所有 属性。 如果环境变量存在,它将覆盖以前的值。
其他人会有多个 属性 文件,这些文件将由特定环境变量(例如,暂存、开发、生产)的值加载。 这样您就可以为特定环境保留多个配置。
相关问题: What is the best way to manage configuration data
另一种方法是使用 ~/.pgpass
来存储凭据。