我想创建一个类似于Android的自动生成的资源文件。我知道如何解析和创建文件,并基本上创建一个新的类文件。我不知道该怎么做才开始这个自动生成过程。
所以,使用eclipse(虽然如果有一种方法可以以不可知的方式实现这一点,我更喜欢它),如何触发自动生成会话来读取属性文件并创建一个.java文件保存静态变量和这个解析文件中的“键”,然后我可以从我的代码中引用它?
答案 0 :(得分:2)
有关如何生成java源文件have already been provided的一些示例。读取属性文件并调用其中一个API应该相对容易。
要触发代码生成过程,您需要添加自定义构建步骤。使用Ant,只需add a custom task。然后将其连接到Eclipse Builder:项目属性 - >建设者 - >新。
随后,Eclipse应该自行查找并刷新此文件。如果没有,请检查您的配置:首选项 - >一般 - >工作区 - >找到“使用本机挂钩或轮询刷新”和类似的并检查它们。 (请注意,我不能100%确定最后一部分是否有效。)
阻力最小的路径是单独运行此构建步骤。如果您的属性文件不经常更改,那么它应该不是那么大的交易。这与你使用Protocol Buffers,JAXB,wsdl2java等时所做的类似。如果你想让一切都像R.java一样神奇地工作,那么你可能需要做一些更复杂的事情:
- 尝试使用Eclipse Builder选项来控制何时执行Ant任务 - 如果你无法解决这个问题,那么我将查看Eclipse如何连接上述项目(即Protocol Buffers,JAXB,wsdl2java等)。 - 查看ADT自定义PreCompilerBuilder类 - 查看build-helper-plugin
答案 1 :(得分:0)
通常使用ResourceBundle
创建一个允许您按键查找属性的对象。您可以在Java Trail上了解ResourceBundle
。
基本思路是您有一个.properties
扩展名的文本文件。您将ResourceBundle
对象指向该文件。然后,您可以使用getString()
或getObject()
方法将密钥传递到所需的属性。这就是它的全部。您只需在启动程序时(或在需要之前的某个时间)加载ResourceBundle
。
如果您创建自己的类ResourceBundle
作为成员值,则可以使用这样的简单代码来使用简单的get()
方法来获取属性值:
public String get(String aString)
{
String sVal = null;
try
{
sVal = (String)myProperties.getObject(aString);
}
catch (MissingResourceException e)
{
log.debug("Missing Property Value: "+aString);
}
return sVal;
}
我希望这很有用。