2009-05-21 8 views
1

Je voudrais faire un script très simple fourmi qui fait 1 chose, qui est de bulid un fichier jar. Mais quand j'essaie d'utiliser un exemple très simple, il échoue en raison des dépendances sur les bocaux dont dépend ma source. Alors, comment vous spécifiez les jars qu'il y a des jars qui doivent être dans le chemin de la classe lors de la construction d'une cible Ant.Ant Exemple de script

<project name="project" default="default"> 
<property name="src.dir"  value="src"/> 
<property name="build.dir" value="build"/> 
<property name="classes.dir" value="${build.dir}/classes"/> 
<property name="jar.dir"  value="${build.dir}/jar"/> 
<property name="lib.dir"  value="//tomcat/common/lib"/> 
<description> description </description> 

<!-- ================================= 
     target: default    
    ================================= --> 
<target name="default" depends="compile" description="description"> 
    <jar destfile="/path/to/dir/Library.jar"> 

    </jar> 
</target> 
    <target name="compile"> 
     <mkdir dir="${classes.dir}"/> 
     <javac srcdir="${src.dir}" destdir="${classes.dir}"/> 
    </target> 

</project> 
+0

Pouvez-vous poster l'exemple? La tâche ant Jar en elle-même ne devrait pas échouer pour les dépendances, peut-être que votre fichier de compilation compile également le src avant de créer le jar. Si c'est le cas, vous devez spécifier l'attribut classpath. –

+0

Maintenant que nous pouvons voir l'exemple, il est clair que le problème est la tâche javac qui manque l'attribut classpath. –

Répondre

1

Sur la base de votre exemple, vous pouvez simplement mettre libs l'intérieur javac:

<javac srcdir="${src.dir}" destdir="${classes.dir}"> 
    <classpath> 
     <pathelement location="${lib.dir}/lib1.jar"/> 
     <pathelement location="${lib.dir}/lib2.jar"/> 
    </classpath> 
</javac> 
3

Votre question n'est pas tout à fait clair - Je suppose que vous voulez dire que vous voulez compiler votre source (la tâche javac) et puis construire un fichier jar à partir des résultats. Si ce n'est pas le cas, je ne vois pas d'où viennent vos dépendances sources. Si ce est le cas, la tâche jar est hors de propos.

Dans la tâche javac, utilisez l'attribut classpath pour spécifier d'autres dépendances jar.

+0

Je vais regarder la tâche javac, et voir si cela aide. – Milhous

+0

Donc, c'était une bonne supposition après tout –

3

est ici un script ANT généré en utilisant l'Eclipse Runnable JAR Export Wizard. Ceci est un projet qui met à jour les statistiques sur une feuille de calcul Google pour une petite ligue de baseball fantastique avec des amis. Il obtient les statistiques en grattant les pages du joueur ESPN.com.

attribut Class-Path dans l'élément manifest est utilisé pour définir le chemin utilisé par le pot. Ceci a par défaut "." mais j'ai dû ajouter explicitement mon chemin src pour que log4j prenne log4j.properties. Les éléments sont des bocaux externes utilisés par ma source que je voulais être inclus avec mon bocal. Je suppose que c'est peut-être ce que vous cherchez.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project default="create_run_jar" name="Create Runnable Jar for Project cob_fantasy_baseball"> 
    <!--this file was created by Eclipse Runnable JAR Export Wizard--> 
    <!--ANT 1.7 is required          --> 
    <target name="create_run_jar"> 
     <jar destfile="C:/workspace/cob_fantasy_baseball/cob_fantasy_baseball.jar" filesetmanifest="mergewithoutmain"> 
      <manifest> 
       <attribute name="Built-By" value="${user.name}"/> 
       <attribute name="Main-Class" value="com.me.cob_fantasy_baseball.UpdateCobStats"/> 
       <attribute name="Class-Path" value=".;src/com/me/cob_fantasy_baseball"/> 
      </manifest> 
      <fileset dir="C:/workspace/cob_fantasy_baseball/classes"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/gdata/java/lib/gdata-core-1.0.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/gdata/java/lib/gdata-spreadsheet-2.0.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/jericho-html-2.6/lib/jericho-html-2.6.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/apache-log4j-1.2.15/log4j-1.2.15.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/jaf-1.1.1/activation.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/javamail-1.4.2/mail.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/javamail-1.4.2/lib/smtp.jar"/> 
      <fileset dir="C:/workspace/cob_fantasy_baseball/src/com/me/cob_fantasy_baseball"/> 
     </jar> 
    </target> 
</project> 

De plus, voici un lien vers la documentation Ant pour la tâche jar: http://ant.apache.org/manual/Tasks/jar.html

Questions connexes