当前位置:  开发笔记 > 编程语言 > 正文

在Java构建过程中更改常量的最佳方法

如何解决《在Java构建过程中更改常量的最佳方法》经验,为你挑选了1个好方法。

我继承了一个在Tomcat下运行的Java应用程序(servlets).由于历史原因,代码具有基于应用程序部署位置的不同"外观和感觉"选项(主要是品牌推广).

有几个常量控制着这个品牌推广过程,它们具有不同的功能,不应该压缩成一个常量(即BRAND,MULTI-LANGUAGE,以及图标和css样式表的位置等).

目前,开发团队必须手动更改常量(它们至少本地化在一个数据类中并且有详细记录),然后使用ANT重新编译应用程序.

假设至少假设Ant 1.8和Java 6.x,自动化此过程的最佳方法是什么?

我知道使用编译器参数没有任何好的解决方案(就像在C或C++中可以做到的那样),并且我倾向于使用一些"最好的方法"来编辑包含常量的源文件,或者将它们放入另一个文件中使用ant构建过程将它们交换出来.我希望得到的结果可以使用像"ant build brand-x"这样的东西,改变品牌会改变结果.

谢谢,

-Richard



1> Dave Ray..:

将您的值放入属性文件中,比如"myapp.properties",然后在启动时从类路径将它们加载到常量中(请参阅下面的内容,了解它如何适合构建过程):

public class Constants
{
    private static final Properties props = new Properties();
    public static final String MY_CONSTANT;

    static
    {
        InputStream input = Constants.class.getResourceAsStream("/myapp.properties");
        if(input != null)
        {
           try
           {
              properties.load(input);
           }
           catch(IOException e)
           {
              // TODO log error
           }
        }

        // Initialize constants (dont' forget defaults)
        MY_CONSTANT = properties.getProperty("constant", "default");
        // .. other constants ...
    }
}

现在,为每个品牌设置一个单独的属性文件.通过-D或build.properties将其名称传递给ANT,然后在将jar文件(或者用于它)之前将文件复制到构建目录中.

显然,上面的代码可以工作,但有很多方法可以清理它并使其成为防弹.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有