2017-10-13 34 views
0

J'essaye de construire un fichier jar exécutable en utilisant ant géré par lierre mais je suis coincé. Notre build-script original assemble le fichier jar plus ou moins bien. Les dépendances sont dans le fichier manifest.mf mais pas sous Class-Path mais plutôt dans l'entrée Compile-Class-Path.jar exécutable en utilisant ant et ivy - Problèmes CLASSPATH

Je peux simplement définir l'entrée Main-Class dans le fichier manifeste, mais avoir un ennemi impossible à essayer d'obtenir les dépendances ivy dans le Class-Path. Bien que cela semble assez simple en utilisant gradle je ne peux pas trouver de solution pour les dépendances ivy.

Existe-t-il un moyen d'obtenir les dépendances ivy résolues et les mettre dans le manifeste? Ces dépendances ne sont que des chemins vers un emplacement réseau où se trouvent les fichiers jar.

Répondre

0

Je donne un moyen standard de le faire. Si vous pouvez fournir votre fichier de construction réel, je peux être plus précis dans la réponse.

Vous pouvez le faire dans la cible ant pour la création d'un pot. Par exemple:

<!-- create a classpath variable with all the jars needed for runtime --> 
<path id="cls.path"> 
    <!-- declare all the paths that you need. For ex: all resolved jars in "runtime" conf --> 
</path> 
<!-- If your path has folder prefix, you'll have to do <pathconvert> --> 
<jar jarfile="${jar_name}" basedir="${classes.dir}"> 
    <manifest> 
     <attribute name="Class-Path" value="${cls.path}"/> 
     ... 
     <!-- You can add standard jar properties and any custom property here --> 
    </manifest> 
</jar> 
+0

Ouais bien que je sais mais la partie qui m'intéresse est: Comment puis-je faire cela automatiquement? Nous avons quelques centaines de dépendances transitives résolues par lierre, je n'ai pas l'intention de toutes les taper. –

+0

Vous n'avez pas à déclarer chaque pot. Vous pouvez créer une variable de chemin de plusieurs manières. Une façon consiste à utiliser le cache Ivy. Cela peut être fait en déclarant quelque chose comme ''. Cela créera un chemin avec tous les jars résolus sous "runtime" conf. Une autre façon est de créer un chemin avec enfant avec '' – smoothed9