2009-09-30 5 views
1

Complètement nouveau à Ant et j'ai juste un problème simple. Je cours la fourmi avec un dossier d'entrée: ant -Dargs="input.txt" run mais il indique qu'il ne peut pas trouver input.txt (aucun tel dossier ou répertoire). J'ai le fichier build.xml et input.txt dans le même répertoire, au dessus de src et bin. Voici mon fichier build.xml, ai-je oublié quelque chose?Problème simple de construction de Java Ant

<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> 
+0

dans quel répertoire input.txt se trouve? – pmu

Répondre

6

La commande ant -Dargs="input.txt" run se déroulera la cible suivante:

<!-- 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> 

Comme écrit dans le commentaire, cet objectif exécute un programme Java de le répertoire ${build.dir} (qui est ici bin), en passant la les arguments de la ligne de commande. Donc, si input.txt est au-dessus bin, vous devez exécuter:

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

Ah ok merci beaucoup! –

0

Le paramètre basedir dans la balise projet indique le répertoire à partir duquel la référence du fichier de construction sont prises lorsque le chemin absolu n'est pas spécifié. Ainsi, votre input.txt devrait être par rapport à votre basedir ou vous devez mentionner le chemin absolu à votre input.txt.

Dans votre cas, le basedir fait référence au répertoire dans lequel réside votre fichier de construction. Donc, si le fichier input.txt se trouve dans le même répertoire que votre fichier de construction, cela devrait fonctionner correctement

+0

C'est 'proj.ProjMain' qui se plaint, pas ant. –

Questions connexes