Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
985 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Exécution d'un script ant avec un code JAVA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Exécution d'un script ant avec un code JAVA

n°1672977
diez
Posté le 17-01-2008 à 20:13:15  profilanswer
 

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 :
 

Citation :

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 :
 

Citation :

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  :pt1cable: .
 
I send an SOS to the world.
dieZ

mood
Publicité
Posté le 17-01-2008 à 20:13:15  profilanswer
 

n°1673084
diez
Posté le 18-01-2008 à 01:22:21  profilanswer
 

up plz !

n°1673133
brisssou
8-/
Posté le 18-01-2008 à 10:01:49  profilanswer
 

?? j'imagine que le dernier des paramètre du Main est le répertoire de travail, non ?
 
c'est pas ça que tu cherches ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1673143
diez
Posté le 18-01-2008 à 10:25:01  profilanswer
 

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

n°1673154
diez
Posté le 18-01-2008 à 10:37:55  profilanswer
 

up !


Message édité par diez le 18-01-2008 à 10:43:36
n°1673159
brisssou
8-/
Posté le 18-01-2008 à 10:44:09  profilanswer
 

lire l'erreur ?

 

edit: petit filou !


Message édité par brisssou le 18-01-2008 à 10:44:29

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1673165
diez
Posté le 18-01-2008 à 10:51:34  profilanswer
 

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"};
org.apache.tools.ant.Main.start(args, null, null);


 
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 ? :'(

n°1673168
brisssou
8-/
Posté le 18-01-2008 à 11:00:09  profilanswer
 

tu rajoutes des arguments dans le tableau de String


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1673219
diez
Posté le 18-01-2008 à 11:42:47  profilanswer
 

et comment l'apel au script deploy est géré ?


Message édité par diez le 18-01-2008 à 11:43:41
n°1673302
brisssou
8-/
Posté le 18-01-2008 à 13:19:51  profilanswer
 

tu lis la doc ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
mood
Publicité
Posté le 18-01-2008 à 13:19:51  profilanswer
 

n°1673325
diez
Posté le 18-01-2008 à 13:51:41  profilanswer
 

Il s'agit de quel documentation ?

n°1673354
brisssou
8-/
Posté le 18-01-2008 à 14:38:24  profilanswer
 

chai pas, c'est de tomcat ?
 
ou alors celle de ant, je sais plus.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1673678
bugbreeder
Posté le 19-01-2008 à 03:03:13  profilanswer
 

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...
 
@++

n°1673713
diez
Posté le 19-01-2008 à 12:30:24  profilanswer
 

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

n°1673750
diez
Posté le 19-01-2008 à 14:04:17  profilanswer
 

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.*;
 
import java.util.*;
import java.io.*;
 
class Aide {
 public static void main(String argv[]) {
   
  Properties userProps = new Properties();
  //userProps.setProperty("arg1", "-DremoteId=0014.4F01.0000.0A6C" );
  ClassLoader loader = null; // or a specific classloader
 
 
  File buildFile = new File("lien_build.xml" );
  String[] args = {"-buildfile", buildFile.toString(), "deploy"};
 
  try {
   Main m = new Main();  
   m.start(args, userProps, loader);
   }
   catch(BuildException be1) { System.out.println("ahaha0" ); }
  }
 }
 


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


Message édité par diez le 19-01-2008 à 14:34:41
n°1674094
diez
Posté le 20-01-2008 à 20:21:53  profilanswer
 

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" );
  String[] args = {"-buildfile", buildFile.toString(), "target"};
  try {
   Main m = new Main();  
   m.start(args, userProps, loader);
   }
   catch(BuildException be1) { System.out.println("ahaha0" ); }


   
  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();
      ProjectHelper helper = new ProjectHelperImpl();
      ant.init();
      helper.parse(ant, new File("build.xml" ));
      ant.executeTarget("nom du target" );


   
   
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
 

n°1674699
diez
Posté le 21-01-2008 à 20:39:25  profilanswer
 

up !

n°1782752
Altenide
Posté le 04-09-2008 à 18:49:51  profilanswer
 

Bonjour,
 
je rencontre un problème sur ce même bout de code.
 
voici mon code pour lancer une tache ant depuis java :
 

Citation :


 public void lanceAnt001() {
 
 Project ant = new Project();
 ProjectHelper helper = new ProjectHelperImpl();
 
 //ajouter un listener pour voir les événements généré par ant
 org.apache.tools.ant.DefaultLogger log = new org.apache.tools.ant.DefaultLogger();  
 
 log.setOutputPrintStream(System.out);
 log.setMessageOutputLevel(Project.MSG_INFO);
 ant.addBuildListener(log);
 
 File buildFile = new File("[...] /webapp/stylesheets/ant/".concat("build-devel.xml" ));
 ant.init();
 helper.parse(ant, buildFile);
 ant.executeTarget("maTargetAnt" );


 
erreur renvoyée :
 

Citation :


BuildException
Message Target "maTargetAnt" does not exist in the project "xxxx".  


 
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 :)

n°1808055
Micke7
Posté le 04-11-2008 à 11:35:45  profilanswer
 

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 :)

n°1808618
Micke7
Posté le 05-11-2008 à 13:44:53  profilanswer
 

Si ça interrese quelqu'un j'ai trouvé une solution qui fonctionne trés bien :)

n°1808622
brisssou
8-/
Posté le 05-11-2008 à 13:50:32  profilanswer
 

dis toi que, comme toi, quelqu'un sera peut-être confronté un jour au problème.
 
Fait comme si ça intéressait quelqu'un, et pose la solution.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1853349
laloi666
Posté le 20-02-2009 à 10:58:35  profilanswer
 

Même problème... alors, c'est quoi la solution STP ?

n°1853389
laloi666
Posté le 20-02-2009 à 13:06:35  profilanswer
 

Citation :

Citation :

HI,
 
I am using a build file from java code like this (ant 1.7, jdk1.6):

Code :
  1. Project project = new Project();
  2. project.init();
  3. ProjectHelper projectHelper = ProjectHelper.getProjectHelper();
  4. projectHelper.parse(project, buildfile); project.executeTarget(target);


with a simpler build file it is working fine, with one that uses imports, I get this buildexcpetion:
 
build.xml:4: import requires support in ProjectHelper
 
any idea?


The import task requires a reference of ProjectHelper to be available in the Project. This is done automatically by using ProjectHelper.configureProject(Project project, File buildFile) like this for instance:

Code :
  1. Project project = new Project();
  2. project.init();
  3. ProjectHelper.configureProject(project, buildfile);
  4. project.executeTarget(target);


Xavier


PS: J'ai trouvé cette solution ici.


Message édité par laloi666 le 20-02-2009 à 13:10:33
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Exécution d'un script ant avec un code JAVA

 

Sujets relatifs
Erreur d'éxécution 91Probleme pour recuprer une variable dans un code embed vers un swf
Création Chat JavaScript - Renommer ue photo en fonction de de la date
Code Javascript pour appeler des fichiers dans une autre fenetreScript web
un script a vendre de mp3offre d'emlpoi développeur php /java /ajax
Recherche Script Enchère avec Xprécuperer variable dans script shell avec formulaire PHP
Plus de sujets relatifs à : Exécution d'un script ant avec un code JAVA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR