Utilisez les resultproperty
et failonerror
attributs de la tâche exec
, par exemple:
<target name="CheckState">
<exec executable="${App.path}"
resultproperty="App.state"
failonerror="false"/>
<echo message="App state was: ${App.state}" />
</target>
Je cite les tâches exec
docs erreurs et des codes de retour:
Par défaut, le code de retour d'un exec est ignoré. Lorsque vous définissez failonerror = "true", tout retour échec de signalisation de code (spécifique au système d'exploitation) provoque l'échec de la génération. Alternativement, vous pouvez définir resultproperty au nom d'une propriété et l'affecter au code de résultat (sauf immutabilité, du cours ).
Si la tentative de lancer le programme échoue avec un code d'erreur dépendant OS, arrête alors la construction à moins failifexecutionfails est définie sur false. Vous pouvez l'utiliser pour exécuter un programme si existe, mais sinon ne rien faire.
Que signifient ces codes d'erreur? Eh bien, ils sont dépendants du système d'exploitation. Sous Windows , vous devez regarder la documentation ; le code d'erreur 2 signifie 'non tel programme', ce qui signifie généralement n'est pas sur le chemin. Chaque fois que vous voyez une telle erreur de toute tâche Ant, il est généralement pas un bug Ant, mais un certain problème de configuration sur votre machine.
Merci. Cela fonctionne! J'ai essayé outputproperty et errorproperty, mais n'ai pas vu resultproperty. – Hyden
Avez-vous défini la propriété fork sur true? Selon O'Reilly's _Ant: The Definitive Guide_, la propriété result ne fonctionnera que si failonerror est false _and_ fork est true. Cependant, fork semble être un attribut de l'élément Java. –
@Jamil Je ne suis pas tout à fait. Une fourchette est implicite dans un exec - il n'est pas nécessaire de le spécifier. –