gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:37 24 4
gpt4 key购买 nike

我继承了一个在 Tomcat 下运行的 Java 应用程序(servlets)。由于历史原因,代码根据应用程序的部署位置(本质上是品牌问题)具有不同的“外观”选项。

有几个常量控制这个品牌过程,它们有不同的功能,不应该被压缩成一个单一的常量(即品牌、多语言、加上图标和 css 样式表的位置等)。

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

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

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

谢谢,

-理查德

最佳答案

将您的值放入一个属性文件中,比如“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)它之前将文件复制到你的构建目录。

显然,上面的代码可以工作,但您可以通过多种方式对其进行清理并使其安全可靠。

关于java - 在 Java 构建过程中更改常量的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/403902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com