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