2011-01-21 67 views
4

我正在写一个Java应用程序,它需要大量存储在许多枚举类型中的静态数据。因为我想用一种用户友好的方式来定制这些数据,例如使用xml或json文件,但我不允许直接使用枚举来完成它,所以我正在寻找一种方法来优雅地完成它。Java预处理阶段

也许一个很好的解决办法是有一个独立的Java程序,它读取XML文件并生成Java源代码被然后用源的剩余部分进行编译。我的doubs是如何以独立的方式自动化这个过程(例如ant?),以及如何将它与eclipse无缝集成,以便在我正在处理项目时自动完成。类似于我所做的任何事情看起来已经存在?任何建议来解决我的问题?

谢谢!

+0

这些枚举将如何使用?它们与代码的其他部分有什么关系? – Maxym

+0

您可以使用Compiler API并在运行时加载它们。 –

+0

由于这是一款游戏,因此它们被用来定义许多特征,例如法术或单位或建筑物等等。到目前为止(我还远远没有结束),我已经达到了20-25枚枚举。我可以满足于硬编码枚举常量,而忽略每个参数,但我宁愿拥有一些配置文件中的一切。 – Jack

回答

1

创建一个项目,其唯一的工作就是生成你的源代码的Java。 确保生成阶段由Ant完成。

现在,包装这个项目到Eclipse和使用自定义Ant构建,调用目标在现有build.xml

这是我们的开发基础设施的一个标准部分,所以这肯定的作品。

2

如果项目和整体结构在某种程度上是固定的(哪些变化最大的是属性的值),您可以考虑为每个项目定义一个条目,并让枚举将它自己的常量与数据从外部源(XML/JSON)读取 - 在加载时或按需提供。

0

你有没有考虑,包括在你的jar的XML文件,并加载它们在启动到使用枚举作为一个关键的地图?

1

你可以有蚂蚁与Eclipse无缝集成才达到的是:

在Eclipse开放源项目属性,进入“建设者”,单击“新建...”,选择“Ant构建”,选择构建文件,转到“目标”选项卡并点击“设置目标...”进行“自动生成”。选择所需的目标并完成。每次保存源文件时都会运行目标(如果选择“自动生成”)。

1

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