Java:将常量设置为编译参数

时间:2014-02-27 12:52:53

标签: java ant compilation constants manifest

我想在我的java程序中设置一个常量,但我不希望它在代码中,而是作为编译参数。我怎样才能做到这一点 ?作为一个清单属性?我该如何恢复价值?

重点是运行自动多重编译来改变这个常量。

我来自C世界,所以也许这在Java中是一个坏主意。我对所有建议持开放态度。

应用程序:我在哈希中包含了一个盐,我想轻松更改盐。

2 个答案:

答案 0 :(得分:1)

这种配置通常存储在配置文件(通常是XML或属性)中,然后在运行时读取。您可以使用自定义构建脚本在构建时自动生成配置文件,也可以手动将文件放入。

另一种选择是使用命令行参数或环境变量来传递配置。文件方法可能是最简单和最强大的。

答案 1 :(得分:1)

您可以使用命令行中指定的系统属性:

java -Dmyprop=myvalue yourapp

然后在您的代码中访问它:

System.getProperty("myprop")

像其他评论所说的那样,除非你想进入字节码操作,否则无法注入真正的代码常量。如果你想去字节码操作路线你可以看看AST变换(java或groovy)或像Javasist这样的项目,但那些将是相当复杂的解决方案。