Comment exécuter Ant en ligne de commande
J'ai un fichier Ant, et j'essaie de l'exécuter en ligne de commande avec la commande suivante:
$ C:\Program Files (x86)\.....>ant -f C:\Silk4J\Automation\iControlSilk4J\build.xml
Mais rien ne se passe, et le résultat est:
BUILD SUCCESSFUL
Total time: 0 seconds
Ma variable d'environnement est correct.
Quel est le problème? Voici mon fichier de build:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- WARNING: Eclipse auto-generated file.
Any modifications will be overwritten.
To include a user specific buildfile here, simply create one in the same
directory with the processing instruction <?eclipse.ant.import?>
as the first entry and export the buildfile again. -->
<project basedir="." default="build" name="iControlSilk4J">
<property environment="env"/>
<property name="ECLIPSE_HOME" value="../../../Program Files (x86)/Silk/SilkTest/eclipse"/>
<property name="junit.output.dir" value="junit"/>
<property name="debuglevel" value="source,lines,vars"/>
<property name="target" value="1.6"/>
<property name="source" value="1.6"/>
<path id="Silk Test JTF 13.5.0 Library.libraryclasspath">
<pathelement location="../../../Program Files (x86)/Silk/SilkTest/ng/JTF/silktest-jtf-nodeps.jar"/>
</path>
<path id="JUnit 4.libraryclasspath">
<pathelement location="${ECLIPSE_HOME}/plugins/org.junit_4.8.2.v4_8_2_v20110321-1705/junit.jar"/>
<pathelement location="${ECLIPSE_HOME}/plugins/org.hamcrest.core_1.1.0.v20090501071000.jar"/>
</path>
<path id="iControlSilk4J.classpath">
<pathelement location="bin"/>
<pathelement location="lib/apache-log4j.jar"/>
<pathelement location="lib/commons-io-2.4.jar"/>
<pathelement location="lib/commons-lang3-3.1.jar"/>
<pathelement location="lib/junit.jar"/>
<pathelement location="lib/org.hamcrest.core_1.1.0.v20090501071000.jar"/>
<pathelement location="lib/silktest-jtf-nodeps.jar"/>
<path refid="Silk Test JTF 13.5.0 Library.libraryclasspath"/>
<path refid="JUnit 4.libraryclasspath"/>
<pathelement location="../../../Users/Admin/Desktop/java-mail-1.4.4.jar"/>
<pathelement location="../../../Users/Admin/Desktop/javax.activation.jar"/>
<pathelement location="lib/joda-time-2.3.jar"/>
</path>
<target name="init">
<mkdir dir="bin"/>
<copy includeemptydirs="false" todir="bin">
<fileset dir="src">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="clean">
<delete dir="bin"/>
</target>
<target depends="clean" name="cleanall"/>
<target depends="build-subprojects,build-project" name="build"/>
<target name="build-subprojects"/>
<target depends="init" name="build-project">
<echo message="${ant.project.name}: ${ant.file}"/>
<javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}">
<src path="src"/>
<classpath refid="iControlSilk4J.classpath"/>
</javac>
</target>
<target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
<target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
<copy todir="${ant.library.dir}">
<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
</copy>
<unzip dest="${ant.library.dir}">
<patternset includes="jdtCompilerAdapter.jar"/>
<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
</unzip>
</target>
<target description="compile project with Eclipse compiler" name="build-eclipse-compiler">
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<antcall target="build"/>
...
Heureux que vous avez collé le fichier build, mais vous avez omis certaines portions importantes. Notez que la balise projet a "construire" comme valeur par défaut. Pour vous aider, nous avons besoin de voir la définition de la cible nommée "construire".
Est-ce que vous parlez ?<projet basedir="." default="construire" name="iControlSilk4J"> ?!?
Oui, qui indique que le
Voici la définition de la cible dans la build.xml :
Voici la def. de la cible dans la build.xml : </target> <nom de la cible="AdministrationCtrl.PlayDensite2Service"> j'exécute cette commande : ...>ant AdministrationCtrl.PlayDensite2Service -f res. est : Buildfile: C:\Silk4J\Automation\iControlSilk4J\build.xml AdministrationCtrl.PlayDensite2Service: [junit] com en cours d'Exécution.miranda.icontrol.silk4j.l'installation.AdministrationCtrl [junit] exécution des Tests: 1, Failures: 0 Erreurs: 1, Ignorées: 0, Temps écoulé: 0 sec [junit] Test com.miranda.icontrol.silk4j.l'installation.AdministrationCtrl FAI LED CONSTRUIRE avec SUCCÈS temps Total: 1 seconde, Mais nothins exécuter ?!?
Est-ce que vous parlez ?<projet basedir="." default="construire" name="iControlSilk4J"> ?!?
Oui, qui indique que le
build
cible est la valeur par défaut. Ce qui signifie que, quelque part dans votre fichier de build, il y a un <target name="build"/>
tag nous avons besoin de voir.Voici la définition de la cible dans la build.xml :
Voici la def. de la cible dans la build.xml : </target> <nom de la cible="AdministrationCtrl.PlayDensite2Service"> j'exécute cette commande : ...>ant AdministrationCtrl.PlayDensite2Service -f res. est : Buildfile: C:\Silk4J\Automation\iControlSilk4J\build.xml AdministrationCtrl.PlayDensite2Service: [junit] com en cours d'Exécution.miranda.icontrol.silk4j.l'installation.AdministrationCtrl [junit] exécution des Tests: 1, Failures: 0 Erreurs: 1, Ignorées: 0, Temps écoulé: 0 sec [junit] Test com.miranda.icontrol.silk4j.l'installation.AdministrationCtrl FAI LED CONSTRUIRE avec SUCCÈS temps Total: 1 seconde, Mais nothins exécuter ?!?
OriginalL'auteur Guylene Emond | 2013-09-26
Vous devez vous connecter pour publier un commentaire.
Va vers la Fourmi site web et télécharger. De cette façon, vous avez une copie de l'Ant à l'extérieur d'Eclipse. Je vous recommande de le mettre sous la
C:\ant
répertoire. De cette façon, il ne dispose pas d'espaces dans les noms de répertoire. Dans votre Panneau de Contrôle du Système, définissez la Variable d'EnvironnementANT_HOME
à ce répertoire, puis pré-pend au SystèmePATH
variable,%ANT_HOME%\bin
. De cette façon, vous n'avez pas à mettre dans le répertoire entier nom.En supposant que vous avez fait ci-dessus, essayez ceci:
Cela va faire plusieurs choses:
build.xml
dans le répertoire où il existe, vous ne finissent pas avec la possibilité que votre Ant ne peut pas localiser un répertoire particulier.La
-d
permet d'imprimer beaucoup de sortie, de sorte que vous pouvez capturer, ou configurer votre terminal tampon à quelque chose comme99999
, et exécutercls
première pour effacer la mémoire tampon. De cette façon, vous aurez la capture de la totalité de la production depuis le début dans le terminal de la mémoire tampon.Nous allons voir comment Ant doit être en cours d'exécution. Vous n'avez pas spécifier toutes les cibles d'exécuter, de sorte Ant doit prendre la valeur par défaut
build
cible. Ici, il est:La
build
cible ne fait rien de lui-même. Cependant, il dépend sur deux autres objectifs, de sorte que ces sera appelé en premier:La première cible est
build-subprojects
:Cela ne fait rien du tout. Il n'a même pas une dépendance.
La prochaine cible est
build-project
n'ont code:Cette cible ne contiennent tâches, et certaines cibles dépendantes. Avant
build-project
s'exécute, il va d'abord exécuter leinit
cible:Cette cible crée un répertoire appelé
bin
, copie tous les fichiers dans lesrc
arbre avec le suffixe*.java
sur lebin
répertoire. Leincludeemptydirs
dire que les répertoires en l'absence de code java ne sera pas créé.Ant utilise un schéma pour faire un minimum de travail. Par exemple, si le
bin
répertoire est créé, le<mkdir/>
tâche n'est pas exécutée. Aussi, si un fichier a été copié précédemment, ou il n'y a pas de non-Java fichiers dans votresrc
arborescence de répertoires, le<copy/>
tâche ne s'exécute pas. Cependant, lainit
cible seront toujours exécutées.Ensuite, nous retournons à notre précédent
build-project
cible:Regardez cette ligne:
Qui devrait les avoir toujours exécuté. A votre sortie d'impression:
Peut-être que vous ne savais pas que c'était à partir de votre build.
Après cela, il court le
<javac/>
tâche. C'est, si il y a des fichiers à compiler. Encore une fois, Ant essaie d'éviter le travail, il n'a pas à faire. Si tous les*.java
fichiers ont déjà été compilé, le<javac/>
tâche ne sera pas exécuté.Et, c'est la fin de la construction. Votre construction peut ne pas avoir fait quoi que ce soit tout simplement parce qu'il n'y avait rien à faire. Vous pouvez essayer d'exécuter la
clean
tâche, puisbuild
:Cependant, Ant imprime généralement la cible en cours d'exécution. Vous devriez avoir vu cela:
Noter que les cibles sont toutes imprimées dans l'ordre où elles sont exécutées, et les tâches sont imprimés comme ils sont exécutés. Cependant, si il n'y a rien à compiler, ou rien à copier, alors vous ne verrez pas ces tâches en cours d'exécution. Est-ce à ressembler à votre sortie? Si oui, cela pourrait être il n'y a rien à faire.
bin
répertoire existe déjà,<mkdir/>
ne va pas s'exécuter.src
, ou qu'ils ont déjà été copiés dansbin
, le<copy/>
tâche ne sera pas exécuté.src
répertoire, ou qu'ils ont déjà été compilées, le<java/>
tâche ne s'exécute pas.Si vous chercher à la sortie de la
-d
de débogage, vous verrez Ant à la recherche à une tâche, puis expliquer pourquoi une tâche particulière n'a pas été exécuté. De Plus, l'option debug expliquera comment Fourmi décide quelles sont les tâches à exécuter.Voir si cela aide.
OriginalL'auteur David W.
est-il toujours d'actualité?
Que je peux voir que vous avez écrit
<target depends="build-subprojects,build-project" name="build"/>
, puis vous avez écrit<target name="build-subprojects"/>
(il ne fait rien). Pourrait-il être une raison?Est-ce à
<echo message="${ant.project.name}: ${ant.file}"/>
imprimer message approprié? Si non, puis la cible n'est pas en cours d'exécution.Regardez le lien suivant http://www.sqaforums.com/showflat.php?Number=623277
Voici les résultats : CONSTRUIRE Cible qui a ÉCHOUÉ "build.xml" n'existe pas dans le projet "iControlSilk4J". au org.apache.outils.ant.Projet.l'ordre de tsort(du Projet.java:1912) at org.apache.outils.ant.Projet.topoSort(du Projet.java:1820) at org.apache.outils.ant.Projet.topoSort(du Projet.java:1783)
au org.apache.outils.ant.Projet.executeTarget(du Projet.java:1368) at org.apache.outils.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
au org.apache.outils.ant.Projet.executeTargets(du Projet.java:1251) at org.apache.outils.ant.Principal.runBuild(Principale.java:809) at org.apache.outils.ant.Principal.startAnt(Principale.java:217) at org.apache.outils.ant.de lancement.Lanceur.exécuter(Lanceur.java:280) at org.apache.outils.ant.de lancement.Lanceur.principale(Lanceur.java:109) temps Total: 0 secondes
Je colle le code et le changement de variable mais encore des messages d'erreurs !
OriginalL'auteur olyv
Essayez d'exécuter toutes les cibles individuellement pour vérifier que tous sont en cours d'exécution correcte
exécuter ant nom de la cible pour exécuter une cible individuellement
par exemple, ant-projet
Également la cible par défaut que vous avez spécifié est
Cela ne fera qu'exécuter l'accumulation de sous-projets de construction de projet et init
OriginalL'auteur Naren