如何让Ant识别项目文件夹中的文件?



我使用Eclipse将文件"testFile.txt"作为参数传递给我的Java程序,当我选择正常运行它时,它工作正常。如果我在Eclipse中以"testFile.txt"作为参数运行Ant build.xml,我会得到错误:

构建失败了目标"testFile.txt"在项目"MyProj1"中不存在。

如果我使用Ant并在linux shell中传递文件,使用以下行:

ant -Dargs="testFile.txt" run

传递字符串值"testFile.txt",但找不到相应的文件。该文件位于MyProj1文件夹中,src和build.xml位于该文件夹中。我是否需要移动.txt文件或修改构建文件?如果我必须修改构建文件,我需要什么?

<target name="run" depends="compile" description="run the project">
    <java dir="${build.dir}" classname="${main.class}" fork="yes">
        <arg line="${args}"/>
    </java>
</target>

添加

<arg file="testFile.txt"/>

到java任务,即:

<target name="run" depends="compile" description="run the project">
    <java dir="${build.dir}" classname="${main.class}" fork="yes">
        <arg line="${args}"/>
        <arg file="testFile.txt"/>
    </java>
</target>

这将创建一个绝对路径到/path/to/build.xml/目录,这是你的文件所在的位置。

如果您的文件在子目录中,将其添加到arg文件值,../也可以按你期望的方式工作

编辑:

目录结构

c:project
|
+---PassFileViaAnt.class
+---build.xml
+---foo.txt
类:

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

<target name="run" description="run the project">
    <java dir="${build.dir}" classname="PassFileViaAnt" fork="yes">
        <arg file="${args}" />
    </java>
</target>

命令:

c:project> ant run -Dargs="foo.txt"
输出:

[java] C:projectfoo.txt

命令:

c:> ant -f c:projectbuild.xml run -Dargs="foo.txt"

输出
[java] C:projectfoo.txt

相关内容

  • 没有找到相关文章

最新更新