Exécution d'un script ant avec un code JAVA - Java - Programmation
Marsh Posté le 18-01-2008 à 10:25:01
Etant toujours aussi nul en ANT depuis hier soir, j'ai une question :
Il ne faut pas etre dans le répertoire courant du script deploy pour pouvoir le lancer ?
Merci pour ta réponse
dieZ
Marsh Posté le 18-01-2008 à 10:51:34
Ben je ne comprends pas comment avec la fonction qui m'est fournit :
Lancer le script deploy depuis le répertoir ou se trouve mon build.xml
Citation : String[] args = {"-buildfile", "path_to_my_build_file/build.xml"}; |
Où est-ce que j'appelle mon script ANT deploy dans cette fontion ? Comment je lui passe des paramètres ?
J'ai bien compris que les paramètres devraient etre passé à la place du premier null car la syntaxe est :
Citation : start(java.lang.String[] args, java.util.Properties additionalUserProperties, java.lang.ClassLoader coreLoader) |
Mais comment expliquer gentillement à cette fonction que je voudrais appeller le deploy ?
Marsh Posté le 18-01-2008 à 11:42:47
et comment l'apel au script deploy est géré ?
Marsh Posté le 19-01-2008 à 03:03:13
Salut,
diez a écrit : En naviguant sur la toile j'ai trouvé sur un forum comment exécuter un script ANT depuis du code JAVA : |
Et pourquoi pas un vulgaire "exec" en Java :
Runtime.getRuntime().exec("ant chemin_complet_de_mon_script_ant" );
C'est pas dur, la String dans l'exec c'est exactement ce que tu tapes dans ta console (en 1 seule commande) pour lancer ton script Ant...
@++
Marsh Posté le 19-01-2008 à 12:30:24
Bonjour,
Effectivemment j'y ai pensé à cette méthode, mais il y aura un soucis de portabilité de semble t'il.
Le code que je produirais ne sera executable que depuis une plateforme Windows non ?
dieZ
Marsh Posté le 19-01-2008 à 14:04:17
Re,
j'ai donc enfin réussi à faire un code qui exécute une target ici deploy depuis un build.xml :
Citation : import org.apache.tools.ant.*; |
Remarque : dans le lien de votre build.xml il faut rajouter un \ à chaque \ . Ex : D:\\Program Files\\Sun\\SunSPOT\\Demos\\CodeSamples\\TemperatureSensorSampleCode\\build.xml
Cependant comme vous pouvez le remarquer j'ai laissé une ligne en commentaire :
Citation : //userProps.setProperty("arg1", "-DremoteId=0014.4F01.0000.0A6C" ); |
Il s'agit la de passer un paramètre à mon target. Ici je voudrais lui passer -DremoteId=0014.4F01.0000.0A6C.
Cependant cele ne marche pas,si quelqu'un a une idée ou si je n'utilise pas la bonne synthaxe faite me le savoir s'il vous plait.
De plus, j'aiemrais aussi récupérer tout ce qui est retourné dans la console dans le but de l'afficher ailleur, est-ce possible ? (je penses) Comment faire ?
thx mates,
dieZ
Marsh Posté le 20-01-2008 à 20:21:53
Yo,
Je reviens après un weekend de recherche sur la question : Comment exécuter un target ant depuis un code JAVA ?
J'ai trouvé plusieurs méthodes :
I) Main :
Cette classe de org.apache.tools.ant nous propose une fonction start()
Citation : File buildFile = new File("D:\\lien\\vers\\mon\\build.xml" ); |
II) Project, ProjectHelper
Ces classes nous permettent d'associer un projet à un .xml ( parse() ) et enfin d'exécuter un target ( executeTarget() )
Citation : Project ant = new Project(); |
Voila le fruit de mes recherche.
Alors concrétement, la première méthode marche parfaitement cependant elle fait quitter le programme JAVA qui l'apelle après l'éxecution du target. C'est bien, mais pas top. En effet, mon application lancer une interface graphique qui se coupe donc dès que l'exécution du taget est finit ....
Puis, la seconde méthode (qui est tres intéressante pour palier au problème de la première) ne fonctionne pas conrectement chez moi, elle ne trouve pas un target qui dépend du target que j'exécute. En d'autre mot, le target (apellons le X) que j'appelle dépend d'autres targets (appelons les Y et Z), quand je lance l'exécution du target X avec la 2eme méthode, une erreur m'est reporté en m'expliquant qu'il ne trouve pas le target Y ...
Citation : Target `Y' does not exist in this project. It is used from target `X' |
Je ne sais pas si ca peut servir mais j'ai une explication à fournir en plus :
Le build.xml qui est associé au projet par la fonction parse() est composé de :
<import file="${sunspot.home}/build.xml"/>
C'est grace à cet import qu'il trouve mon target que j'appelle.
Ma demande est donc :
¤ savez-vous si il est possible d'empécher que le programme JAVA qui appelle la méthode 1 se termine après l'exécution du target
¤ savez-vous comment fixer l'erreur de la méthode 2 ?
Merci d'avance, dieZ
Marsh Posté le 04-09-2008 à 18:49:51
Bonjour,
je rencontre un problème sur ce même bout de code.
voici mon code pour lancer une tache ant depuis java :
Citation : |
erreur renvoyée :
Citation : |
hors ma target existe bien dans le fichier xml
Toutes mes recherches et tentatives se sont soldées par un echec.
Avez-vous une idée ? merci
Marsh Posté le 04-11-2008 à 11:35:45
Bonjour,
Je me permet de remonterle sujet car j'ai le meme soucis avec le org.apache.tools.ant qui ferme l'application une fois le script éxecuté. Existe-t-il une solution pour éviter cela?
Merci
Marsh Posté le 05-11-2008 à 13:44:53
Si ça interrese quelqu'un j'ai trouvé une solution qui fonctionne trés bien
Marsh Posté le 20-02-2009 à 13:06:35
Citation :
|
PS: J'ai trouvé cette solution ici.
Marsh Posté le 17-01-2008 à 20:13:15
Bonsoir,
J'ai suis tout nouveau dans le monde d'ANT, ce que je vais pouvoir dire va surement vous paraitre peu clair, je fais du mieux que je peux.
J'ai un script ant qui s'apelle deploy et qui se citue dans le répertoire : D:\Program Files\Sun\SunSPOT\sdk\ant .
J'utilise ce script pour envoyer des programmes sur des capteurs par onde radio.
Voila ce que je tape dans la console DOS pour arriver a mes fins :
D:\>cd "Program Files\Sun\SunSPOT\Demos\CodeSamples\TemperatureSensorSampleCode"
D:\Program Files\Sun\SunSPOT\Demos\CodeSamples\TemperatureSensorSampleCode>ant deploy -DremoteId=0014.4F01.0000.0A6C
Donc enfait, j'appelle le script deploy depuis le repertoire où se trouve le code de l'application que je veux envoyer par radio. Et de plus je lui passe en paramètre l'adresse du capteurs sur lequel il doit le deployer (-DremoteId=0014.4F01.0000.0A6C)
Donc j'arrive très bien à faire ce que je veux sous la console dos, mais maintenant il faut que je fasse la même chose mais grace à un code java.
En naviguant sur la toile j'ai trouvé sur un forum comment exécuter un script ANT depuis du code JAVA :
String[] args = {"-buildfile", "path_to_my_build_file/build.xml"};
org.apache.tools.ant.Main.start(args, null, null);
Mais je n'arrive pas a l'appliquer dans mon cas précis où il faut que j'exécute le script deploy avec un paramètre depuis un autre répertoire .
I send an SOS to the world.
dieZ