如何将ant命令行参数传递给ant java项目?

时间:2014-01-08 09:17:31

标签: java ant

我有这样的命令:

Ant命令:

<path-to-ant/bin/ant -f build.xml sql -lib <path-to-lib>/lib -Dhome=path-home -Ddev=path-to-dev -DsdkMode=install -DcompileSource.dest=path-to-dest -DOSTEMP=/tmp -D-BIFLocation=path-to-loation -DexecutionDirectory=path-exec-dir

在开始时,我们使用ProcessBuilder builder = new ProcessBuilder(command);运行它,currentric我们想用ANT API运行它,所以我们使用ant Project构建它。 我只是构建一个方法:

// string value after "-f" is the location of buildFile
    File buildFile = new File(antCommand.get((antCommand.indexOf("-f")+ 1)));

    // string value before "-lib" is the target to run
    String traget = antCommand.get((antCommand.indexOf("-lib")- 1));

    Project project = new Project();
    project.setUserProperty("ant.file", buildFile.getAbsolutePath());
    project.init();

    //set logger
    DefaultLogger consoleLogger = new DefaultLogger();
    consoleLogger.setErrorPrintStream(System.err);
    consoleLogger.setOutputPrintStream(System.out);
    consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
    project.addBuildListener(consoleLogger);

    ProjectHelper projectHelper = ProjectHelper.getProjectHelper();
    project.addReference("ant.projectHelper", projectHelper);
    projectHelper.parse(project, buildFile);

    project.executeTarget(traget);

但是我不知道如何使用Java从命令行传递参数-D。

有人有想法或经验吗? 非常感谢你。

1 个答案:

答案 0 :(得分:0)

将其添加为build.xml目标

中的系统属性
<sysproperty key="sdkMode" value="sdkMode" />

...然后在代码中抓住它

String sdkMode = System.getProperty("sdkMode");

...当然在命令行上指定它

 ant <run-target> -DsdkMode=TEST