2013-02-08 4 views
1

Got mes mains sur un vieux scénario de l'an 2000. C'est en Java et il y a un fichier de construction qui compile tout:Ant build ne fait pas jar

<?xml version="1.0"?> 
    <project name="chat" default="compile" basedir="."> 
     <target name="init"> 
      <property name="conf.dir" value="conf" /> 
      <property name="src.dir" value="src" /> 
      <property name="resource.dir" value="resource" /> 
      <property name="build.dir" value="build" />  
      <property name="release.dir" value="release" /> 
      <property name="etc.dir" value="etc" /> 
      <property name="lib.dir" value="lib" /> 
     </target> 



     <target name="clean" depends="init"> 
      <delete dir="${build.dir}" />  
      <delete dir="${release.dir}" /> 
     </target> 

     <target name="compile" depends="init"> 
      <mkdir dir="${build.dir}" /> 
      <javac srcdir="${src.dir}" destdir="${build.dir}" includeAntRuntime="false" debug="true" optimize="false" />   
     </target> 

     <target name="release" depends="compile">  
      <mkdir dir="${release.dir}" /> 

      <jar destfile="${release.dir}/chat_service.jar" basedir="${build.dir}" includeantruntime="false" />   
     </target> 

    </project> 

Quand je lance avec Ant dans Windows l'invite de commande indique:

Buildfile: build.xml 

init: 

compile: BUILD SUCCESSFUL 

Mais il ne crée pas de fichier jar. Tout ce qu'il fait est de copier le projet exact et le compiler en fichiers de classe.

Est-ce que quelqu'un sait comment je peux créer le bon fichier? C'est un serveur de discussion et j'en ai besoin pour lancer mon client.

Répondre

4

La cible par défaut du fichier de construction est compile:

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

Donc, si vous invoquez ant sans spécifier une cible, la cible compile sera exécutée. Pour exécuter la cible release, utilisez

ant release 
-1

Vous devez ajouter une autre section cible pour générer le fichier jar. Par exemple:

<target name="jar" depends="compile"> 
    <mkdir dir="${jar.dir}" /> 
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}"> 
     <manifest> 
      <attribute name="Main-Class" value="${main-class}" /> 
      <attribute name="Class-Path" value="config/ properties/ ${manifest.classpath}" /> 
     </manifest> 
    </jar> 

</target> 

à la fin, bien sûr, vous devez configurer ce bloc pour votre propre fichier et les propriétés.

+0

Il n'est pas nécessaire d'ajouter une cible supplémentaire, car il en existe déjà une avec une tâche jar. Il a juste besoin d'être exécuté/utilisé (version ant) – stan0

Questions connexes