2012-09-07 28 views
2

我想创建一个类似于android的R的自动生成的资源文件。我知道如何解析和创建文件,并基本上创建一个新的类文件。我不知道该怎么做的是启动这个自动生成过程。因此,使用eclipse(尽管如果有办法以不可知的方式实现这种情况,我更喜欢它),那么如何触发自动生成会话来读取属性文件并创建.java文件保存静态变量和解析文件中的“键”,然后我可以从我的代码中引用?如何从资源文件创建自动生成的枚举?

+0

如果你只是想改变资源(属性文件后一种方式来触发生成),你可以使用一个蚂蚁建设者,它调用你的发电机。右键单击项目 - >属性 - >生成器 - >新建 – Andreas

回答

2

几个如何生成java源文件的例子have already been provided。读取属性文件并调用其中一个API应该相对容易。

要触发代码生成过程,您需要添加自定义生成步骤。用蚂蚁,只需add a custom task。然后将其连接到Eclipse Builder:项目属性 - >构建器 - >新建。

随后,Eclipse应该自己查找并刷新此文件。如果没有,请检查您的配置:首选项 - >常规 - >工作区 - >找到“刷新使用原生钩子或轮询”和类似的,并检查它们。 (请注意,我不能100%确定这最后一部分可以工作。)

阻力最小的路径是单独运行此构建步骤。如果你的属性文件没有经常改变,那么它不应该是一个大问题。这与您使用协议缓冲区,JAXB,wsdl2java等时的操作类似。如果您希望一切都像R.java一样神奇地工作,那么您可能必须做一些更复杂的操作:

- 尝试使用Eclipse Builder选项来控制何时执行Ant任务 - 如果您无法弄清楚,那么我会查看Eclipse如何连接上述项目(即Protocol Buffers,JAXB, WSDL2Java的,等等) - 看看ADT定制PreCompilerBuilder类 - 退房build-helper-plugin

+0

谢谢你。正是我需要的。为了看看我能否为未来提供一些更多的细节,我会再给几天赏金,但在所有可能的情况下,这都是你的。 – AedonEtLIRA

+0

如果ant为你工作,那么一旦你有ant任务添加一个建设者到eclipse项目(项目属性,建设者,添加蚂蚁)。选择任务和控制执行时间有很多选项。在过去,我已经能够设置这样一个单一的目录进行监视的变化,然后导致蚂蚁任务运行(做jsmin自动)。 – philwb

+0

你说得对,我似乎忘记了包含关于Eclipse Builders的信息。为了完整性,我添加了它。 – jtoberon

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; 
    } 

希望这很有用。

+0

谢谢,但不是我在找什么。我正在寻找最终的不可实例化的类,它将被自动生成以包含来自资源文件的密钥,然后我可以自动创建.java文件。 – AedonEtLIRA

+0

对不起,当我看到你想从属性文件中读取时,我一定已经跳过了枪。最好的方法是使用'ResourceBundle'。 – Ruminator