J'aimerais connaître les capacités de débogage d'ANT utilisant Eclipse. Fondamentalement J'ai un script de génération ANT écrit par un collègue et je voulais parcourir Au travers de chaque cible pour voir quelles sont les diverses tâches appelées par des êtres .
Vous pouvez le faire dans Eclipse en procédant comme suit:
Comme ant est simplement une application Java, vous pouvez simplement ajouter une configuration de débogage (type Application Java) à Eclipse. Voir Exécuter Ant via Java pour savoir comment appeler Ant comme s'il s'agissait d'une application Java. Je suppose que vous savez comment déboguer une application Java dans Eclipse, ce qui devrait vous permettre de continuer. Sinon, demandez et je vais développer.
Avec les grands fichiers Ant ou les grands projets Java, lorsque plusieurs fichiers Ant s'appelant, je trouve qu'un graphique de dépendance est très utile. J'ai utilisé Grand à cette fin.
Bien sûr, cela n’aidera pas beaucoup si vous voulez déboguer la séquence d’instructions dans une cible donnée.
Créez un script antdebug.sh
qui définit la variable d'environnement ANT_OPTS
avant de commencer ant
#!/bin/bash
set -e
export ANT_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=2607"
# now execute ant
exec ant "$@"
Ensuite, vous pouvez y connecter à distance en utilisant votre IDE. Veuillez noter le suspend=y
, il suspendra l'exécution jusqu'à ce que vous soyez attaché.
Avant de vous plonger dans les éléments internes de Ant, il peut être intéressant d'essayer de lancer le script avec l'option -d (debug) et d'observer le résultat. En supposant que vous souhaitiez comprendre comment le script Ant particulier fonctionne (ou ne fonctionne pas) et non Ant lui-même.
Si Ant est votre domaine d’intérêt, les réponses ci-dessus sont la direction à suivre.
ajoute la balise xml ci-dessous à ant build.xml
après l'init cible
<javac srcdir="${src.Java.dir}" destdir="${target.build.dir}" includeantruntime="true" source="${source}" target="${target}" debug="true" debuglevel="lines,vars,source" classpathref="main.classpath" fork="true" memoryinitialsize="512m" memorymaximumsize="512m" />
si le javac est déjà là, assurez-vous d’ajouter debug="true" debuglevel="lines,vars,source"
pour avoir une session de débogage interactive.