简单的Java Ant构建问题

时间:2009-09-30 00:13:22

标签: java xml ant build

Ant全新,我只有一个简单的问题。我正在使用输入文件运行ant:ant -Dargs="input.txt" run但是它说它找不到input.txt(没有这样的文件或目录)。我在build.xmlinput.txt上方的同一目录中有src个文件和bin。这是我的build.xml文件,我错过了什么?

<project name="Project" default="compile" basedir=".">

  <description>
    A build file for a project
  </description>

  <!-- global properties for this build file -->
  <property name="source.dir" location="src"/>
  <property name="build.dir" location="bin"/>
  <property name="doc.dir" location="doc"/>
  <property name="main.class" value="proj.ProjMain"/>

  <!-- set up some directories used by this project -->
  <target name="init" description="setup project directories">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${doc.dir}"/>
  </target>

  <!-- Compile the java code in ${src.dir} into ${build.dir} -->
  <target name="compile" depends="init" description="compile java sources">
    <javac srcdir="${source.dir}" destdir="${build.dir}"/>
  </target>

  <!-- execute the program with the fully qualified name in ${build.dir} -->
  <target name="run" description="run the project">
    <java dir="${build.dir}" classname="${main.class}" fork="yes">
        <arg line="${args}"/>
    </java>
  </target>

  <!-- Delete the build & doc directories and Emacs backup (*~) files -->
  <target name="clean" description="tidy up the workspace">
    <delete dir="${build.dir}"/>
    <delete dir="${doc.dir}"/>
    <delete>
      <fileset defaultexcludes="no" dir="${source.dir}" includes="**/*~"/>
    </delete>
  </target>

  <!-- Generate javadocs for current project into ${doc.dir} -->
  <target name="doc" depends="init" description="generate documentation">
    <javadoc sourcepath="${source.dir}" destdir="${doc.dir}"/>
  </target>

</project>

2 个答案:

答案 0 :(得分:6)

命令ant -Dargs="input.txt" run将运行以下目标:

  <!-- execute the program with the fully qualified name in ${build.dir} -->
  <target name="run" description="run the project">
    <java dir="${build.dir}" classname="${main.class}" fork="yes">
        <arg line="${args}"/>
    </java>
  </target>

如注释中所述,此目标执行来自 ${build.dir}目录(此处为bin)的Java程序,并将命令行参数传递给它。因此,如果input.txt高于bin,则应运行:

$ ant -Dargs="../input.txt" run

答案 1 :(得分:0)

项目标记中的 basedir 参数表示未指定绝对路径时从中获取构建文件引用的目录。因此 input.txt 相对 basedir ,或者您应该提及 input.txt 的绝对路径。

在您的情况下,basedir指的是构建文件所在的目录。因此,如果input.txt与构建文件位于同一目录中,它应该可以正常工作