Java预处理阶段

时间:2011-01-21 20:52:03

标签: java preprocessor

我正在编写一个需要大量静态数据的Java应用程序,这些数据存储在许多枚举类型中。因为我想用一种用户友好的方式来使用例如xml或json文件来自定义这些数据,但是我不允许直接用枚举来实现它,我正在寻找一种优雅的方法。

也许一个好的解决方案是拥有一个单独的java程序来读取xml文件并生成java源代码,然后使用其余部分源代码编译。我的doubs是如何以独立的方式自动化这个过程(例如ant?)以及如何将它与eclipse无缝集成,以便在我使用项目时自动完成它。有什么类似于我的东西看起来已经存在?有什么建议可以解决我的问题吗?

谢谢!

5 个答案:

答案 0 :(得分:2)

如果项目和整体结构以某种方式固定(并且最多的是属性的值),您可以考虑使用每个项目的一个条目定义枚举,并让枚举用数据填充其自己的常量从外部源(XML / JSON)读取 - 在加载时或按需读取。

答案 1 :(得分:1)

创建一个项目,其唯一的工作是从您的源生成java。 确保生成阶段由Ant完成。

现在,将此项目包装到eclipse中并使用自定义ant构建器,该构建器在您现有的build.xml中调用目标。

这是我们开发基础设施的标准部分,所以这绝对有效。

答案 2 :(得分:1)

你可以让ant与eclipse无缝集成,以实现:

在Eclipse打开项目属性中,转到“Builders”,单击“New ...”,选择“Ant Builder”,选择一个构建文件,转到“Targets”选项卡,然后单击“Set Targets ...” “自动构建”。选择所需的目标,您就完成了。每次保存源文件时都会运行目标(如果选择“自动构建”)。

答案 3 :(得分:1)

您可以编写一个生成代码的maven插件。有一些插件可以做到这一点。它不会自动运行,但您可以将其连接到标准maven生命周期,以便在编译之前执行。 我最近做了类似的事。

答案 4 :(得分:0)

您是否考虑过在您的jar中包含XML文件,并在启动时将它们加载到使用枚举作为键的地图中?