首页 > 解决方案 > Ant:从ant执行一个java程序并存储返回值

问题描述

我是蚂蚁的新手。我基本上是在尝试从 ant 执行一个 java 程序。我已经设法让它发挥作用。但是,我不确定如何在 ant 中捕获程序返回的值,以便在 ant 文件中使用它进行进一步操作。

构建.xml

<?xml version="1.0" encoding="UTF-8"?>
<project default="run" name="Experiment 1">
    <property name="shimura" value="Danzo!!!"/>
    <target name="run" depends="compile">
        <java classname="com.sim.expt.Demo">
            <classpath path="./staging" />
            <arg line="${shimura}"/>
        </java>
    </target>
    <target name="compile">
        <javac srcdir="./src" includeantruntime="false" destdir="./staging" />
    </target>
</project>

Java程序:

package com.sim.expt;

public class Demo {

    public static void main(String[] args) {
        String name=args[0];
        System.out.println("Nani!!!!!!!"+name);
    }

}

标签: javaant

解决方案


使用outputproperty属性,详见https://ant.apache.org/manual/Tasks/java.html

<?xml version="1.0" encoding="UTF-8"?>
<project default="run" name="Experiment 1">
    <property name="shimura" value="Danzo!!!"/>
    <target name="run" depends="compile">
        <java classname="com.sim.expt.Demo" outputproperty="myprop">
            <classpath path="./staging" />
            <arg line="${shimura}"/>
        </java>
    </target>
    <target name="compile">
        <javac srcdir="./src" includeantruntime="false" destdir="./staging" />
    </target>
</project>

然后${myprop}将包含来自 stdout 和 stderr 的输出(除非单独重定向)。


推荐阅读