如何为不同的机器使用不同的属性文件?

时间:2019-05-22 06:53:46

标签: java properties apache-commons

因此,我正在一个团队中进行一个小型学校项目,我们正在使用apache开发java / jsp Web应用程序。我创建了简单的properties.config文件,以便可以存储值并在以后使用它们,看起来像这样:

home_url = http://localhost:8080/to3/
to3_path = C:/Users/User2/Documents/workspace/TO-3
db_url = jdbc:mysql://localhost:3306/to3?useUnicode=true&characterEncoding=UTF-8

我遇到的问题是当我提交它并且有人进行结帐时,他们必须更改url-s和路径的值,以使其适合他们的计算机。我听说我可以制作一个自定义属性文件,该文件将覆盖这些默认值,如果它可以识别某些机器,但是我不知道该怎么做。

在此先感谢大家的帮助。

2 个答案:

答案 0 :(得分:0)

不提交项目设置。将它们放在.gitignore中并提交它的副本(例如properties.config.sample)。确保与添加的任何新密钥保持最新,但每个开发人员都应制作自己的 untracked 副本。

答案 1 :(得分:0)

正如Amadan指出的那样,您不应提交项目属性。我的建议是创建一个扩展名为.properties的文件,并将您的属性放入其中。要在Java中使用此文件,您可以创建类似

的类
public class MyProperties{
    private String homeUrl = "";
    private String to3Path = "";
    private String dbPath = "";

    private final String configPath = System.getProperty("user.home") + File.separator + "my-props.properties";

    public void loadProperties(){
        try {
            Properties prop = new Properties();
            InputStream input = null;
            File filePath = new File(configPath);
            input = new FileInputStream(filePath);
            // load a properties file
            prop.load(input);
            homeUrl = prop.getProperty("home_url");
            to3Path = prop.getPropert("to3_path");
            dbPath = prop.getProperty("db_url");
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

    // getters & setters 
}

然后可以在您的应用中执行

MyProperties props = new MyProperties();
props.loadProperties();
String homeUrl = props.getHomeUrl();

System.getProperty("user.home")将根据操作系统提供原始路径。 例如,在Windows中,这是路径为C:\Users\yourName

通过这种方式,您的所有同事都可以将自己的财产放置在家庭路径中的个人PC中,您将能够在没有冲突的情况下工作。