从Ant目标将变量传递给Java方法

时间:2010-05-24 20:28:12

标签: java ant build properties

目前我有一个.properties文件来存储与框架相关的设置。 示例:

default.auth.url=http://someserver-at008:8080/
default.screenshots=false
default.dumpHTML=false

我编写了一个类来提取这些值,这是该类的方法。

public static String getResourceAsStream(String defaultProp) {
    String defaultPropValue = null;
    //String keys = null;
    try {
        InputStream inputStream = SeleniumDefaultProperties.class.getClassLoader().getResourceAsStream(PROP_FILE);
        Properties properties = new Properties();
        //load the input stream using properties.
        properties.load(inputStream);
        defaultPropValue = properties.getProperty(defaultProp);

    }catch (IOException e) {
        log.error("Something wrong with .properties file, check the location.", e);
    }
    return defaultPropValue;
}

在整个应用程序中,我使用如下方法来确定所需的属性:

public String getBrowserDefaultCommand() {
    String bcmd = SeleniumDefaultProperties.getResourceAsStream("default.browser.command");
    if(bcmd.equals(""))
        handleMissingConfigProperties(SeleniumDefaultProperties.getResourceAsStream("default.browser.command"));
    return bcmd;
}

但我还没有决定对此进行更改并使用Ant并传递参数,而不是从.properties文件中使用它。

我想知道如何使用Ant将值传递给Java方法。这些类都没有主要方法,也没有任何主要方法。由于这个原因,我无法使用java系统属性。

3 个答案:

答案 0 :(得分:1)

我认为您在调用java时需要使用-Dpropname=propvalue语法在命令行上传递属性值。请参阅here

答案 1 :(得分:0)

如果我理解你的问题。

我认为使用args将更容易。每当你运行java程序

java myJavaProgram [param1, param1, ...]

如您所见,我们可以在启动java程序时传递多个参数。然后将所有参数存储到args。

以下是演示如何在java中访问CLI的程序。

public static void main(String[] args){
   for(String arg : args){
      System.out.println(arg);
   }

}

希望这有帮助。

答案 2 :(得分:0)

使用下面的ant

<property name="browser" location="C:/Program Files/Internet Explorer/iexplore.exe"/>
<property name="file" location="ant/docs/manual/index.html"/>

<exec executable="${browser}" spawn="true">
    <arg value="${file}"/>
</exec>

您可以使用运行时参数从此直接调用该类,或者您可以使用已传递给类的参数进行批处理,然后调用批处理