2017-09-25 5 views
1

Juste en essayant de mettre à jour des vieux trucs et une partie de cela, j'ai besoin de regrouper mon pot personnalisé qui utilise Log4j. J'ai ajouté ce qui suit pour ma tâche <javac> qui se compile avec succès.Java Job Ant comment expédier le bocal Log4j avec mon pot

<path id="my.classpath"> 
    <fileset dir="${mainpath}"> 
     <include name="**/*log4j*.jar"/> 
    </fileset> 
</path> 

    <javac srcdir="src/java" destdir="build/filez/java" debug="on" deprecation="no" 
      includes="my/instruments/**/*, org/apache/log4j/**/*"> 
     <classpath refid="my.classpath"/> 
    </javac> 

Cependant, dans mon travail, je <jar> ne vois pas emballé dépendance log4j avec mon pot personnalisé. Cela peut être une question stupide, mais comment s'assurer que mon jar personnalisé n'échoue pas lorsqu'il est appelé à partir d'une autre application puisque la dépendance n'est pas emballée? Cela ira-t-il tant que log4j a été chargé par classloader dans l'application cible?

De plus, dois-je ajouter quelque chose dans mon manifeste pour cela?

Je ne peux pas utiliser Maven (oui je sais) pour un peu de temps, donc ne peut pas résoudre ce problème avec Maven

+0

Si vous voulez inclure un fichier dans votre fichier jar, cela est contrôlé par la tâche 'jar', pas par' javac'. Que vous ayez ou non besoin d'inclure log4j dans votre fichier jar dépend de l'existence d'une dépendance à l'exécution ou à la compilation. – CAustin

Répondre

1

Vous pouvez utiliser One-JAR pour emballer votre code avec elle est dépendances dans un grand exécutable JAR.

Il peut être utilisé soit en tant qu'outil autonome à partir de la ligne de commande, soit en tant que tâche définie dans build.xml.

<!-- Construct the One-JAR file --> 
<one-jar destfile="hello.jar" manifest="hello.mf"> 
    <main> 
     <!-- Construct main.jar from classes and source code --> 
     <fileset dir="${classes.dir}/src"/> 
    </main> 
    <lib> 
     <fileset file="${build.dir}/lib.jar" /> 
    </lib> 
</one-jar> 
+0

éducation, éducation, éducation - Je ne peux me souvenir de ces mots !! Une question s'il vous plaît! Ai-je besoin d'ajouter quelque chose au manifeste? J'ajoute un manifeste appelé 'my-MANIFEST.MF 'à ce one-jar – ha9u63ar

+0

Rien en dehors de la classe principale je pense – Raniz

+0

Accrochez-vous! Cela ne fait pas partie de Ant - c'est quelque chose de personnalisé? – ha9u63ar