我继承了一个在 Tomcat 下运行的 Java 应用程序(servlet)。由于历史原因,根据应用程序的部署位置(本质上是品牌问题),代码具有不同的“外观和感觉”选项。
有几个常量控制这个品牌过程,它们具有不同的功能,不应压缩为单个常量(即 BRAND、MULTI-LANGUAGE、加上图标和 CSS 样式表的位置等)。
目前,开发团队必须手动更改常量(它们至少本地化在一个数据类中并有详细记录),然后使用 ANT 重新编译应用程序。
假设至少有 Ant 1.8 和 Java 6.x,自动化此过程的最佳方法是什么?
我知道使用编译器参数还没有任何好的解决方案(就像在 C 或 C++ 中可以做的那样),并且我倾向于某种“最佳方法”来编辑包含常量的源文件,或者将它们放入另一个文件中使用 ant 构建过程交换它们。我希望得到一个可以使用“ant buildbrand-x”之类的东西来工作的结果,其中更改品牌将改变生成的版本。
Thanks,
-Richard
将您的值放入属性文件中,例如“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(或 war)它之前将文件复制到构建目录。
显然,上面的代码可以工作,但是有很多方法可以清理它并使其防弹。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)