如何从git隐藏JDBC连接凭据?

如何从git隐藏JDBC连接凭据?,git,postgresql,jdbc,properties-file,postgresql-9.5,Git,Postgresql,Jdbc,Properties File,Postgresql 9.5,我处理几个小型Java项目(使用Maven+NetBeans)并将它们存储在中 我想在一些项目中使用,但不想公开数据库的连接凭据 当然,还有其他开发者已经面临类似的问题 请分享你的解决方案 也许可以将数据库名称/用户/密码放入*.properties文件中,然后在git存储库中忽略它,但将其保留在工作区中?如何在我的Java项目中加载该文件?您可以将该文件添加到.gitignore中,但请将其保存在工作副本中,正如您所说的那样,我并不认为这里有什么问题。 照办 只要加载这些文件,您就可以获得更多

我处理几个小型Java项目(使用Maven+NetBeans)并将它们存储在中

我想在一些项目中使用,但不想公开数据库的连接凭据

当然,还有其他开发者已经面临类似的问题

请分享你的解决方案


也许可以将数据库名称/用户/密码放入
*.properties
文件中,然后在git存储库中忽略它,但将其保留在工作区中?如何在我的Java项目中加载该文件?

您可以将该文件添加到.gitignore中,但请将其保存在工作副本中,正如您所说的那样,我并不认为这里有什么问题。 照办

只要加载这些文件,您就可以获得更多信息。他们建议这样使用它们:

Properties defaultProps = new Properties();
FileInputStream in = new FileInputStream("defaultProperties");
defaultProps.load(in);
in.close();
然后,您可以使用
getProperty(字符串键)
getProperty(字符串键,字符串默认值)


我看到人们做的另一件事是编写git预提交,并使用
sed
替换文件中的凭据,但我对此没有任何经验。

除了使用@dbt等属性文件之外,还有一种方法是使用环境变量

因此,在启动应用程序时,可以使用put环境变量来执行命令。通常应用程序在加载属性文件时具有优先权

e、 g。 它将检查属性文件并加载到所有属性。 如果环境变量存在,它将覆盖上一个值

其他人将拥有多个属性文件,这些文件将按特定环境变量(例如,暂存、开发、生产)的值加载。 这样,您可以为特定环境保留多个配置

相关问题:

另一种选择是使用
~/.pgpass
存储凭据。

我通常使用您描述的属性文件方法。有很多资源描述如何从文件加载属性。当我在命令行上运行Java程序时,
~/.pgpass
真的有效吗?例如:。那该用什么呢?我还没试过。我确实知道,当我从shell启动“psql”时,它可以工作。我已经搜索过,但没有读取
~/.pgpass
文件
Properties defaultProps = new Properties();
FileInputStream in = new FileInputStream("defaultProperties");
defaultProps.load(in);
in.close();