IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

Lancer des scripts Ant depuis un plugin Eclipse


Sujet :

Eclipse Platform

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut Lancer des scripts Ant depuis un plugin Eclipse
    Bonjour,

    J'aimerai créer un plugin Eclipse qui me permettrait de lancer des scripts Ants...

    Je sais que le plugin external tools s'occupe déjà de cette tache mais il n'offre pas certains avantages...

    En effet, j'ai des scripts ant (avec des launch eclipse comme config en plus si possible) qui se trouve sur un serveur de fichier... ces scripts sont utilisés par plusieurs dizaines de développeurs.

    Le problème avec les external tools c'est qu'il faut spécifier chaque scripts un à un et si j'en rajoute un, il faut alors le spécifié sur Toutes les install d'eclipse.. ce qui commence à devenir lourd...

    J'aimerai bien pouvoir donner un répertoire distant et que mon plugin fasse le boulot de créer les icones qui lancerait les launch qui lancerait les scripts ant qui... (ok ok... )...

    De plus certains développeurs n'ont pas besoin de ces scripts c'est pour cela que j'aimerai les mettre dans un plugin... ceux qui les veulent.. installent le plugin... spécifent un repertoire distant et peuvent lancer tous ces scripts depuis le menu fait pour cela.. en laissant les external tool vide de ces scripts "génériques" pour lui... (c'est plus propre... à mon gout)

    Alors voila... sans vouloir réinventé la roue, comment pourait-je faire un plugin qui selon un répertoire distant resence des fichier launch (ca il n'y a aucun problème, c'est pour la suite que c'est plus dur) et qui les ajoute dans un menu dans la barre des menus... et lorsqu'on les lances lancerait ces launch exactement comme si on les avait lancé depuis la fenetre external tool->run...

    En clair comment utiliser la partie core des external tools depuis un autre plugin ??? (ou une autre méthode qui m'offre les même sevices/avantages)

    merci à toutes les personnes qui ont eu le courage de lire ma question jusq'au bout et à toutes celles qui sauront me répondre...

    Angel

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    Bon j'ai trouvé un méthode de barbare pour lancer des commandes ant (en fait je fait plus ou moins la meme chose que eclipse.. plus ou moins parcque vu que je ne sais pas dans quel plugin il fait ca je n'ai "que" écouter les évenement avec Process Monitor pour voir ce qu'il faisait...)

    voila le comportement de barbare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    public static void run() {
    	String java = "D:/Java/jdk1.5.0_11/bin/javaw.exe";
    	String ant_home = " -Dant.home=D:/Ant/apache-ant-1.7.0";
    	String ant_lib = " -Dant.library.dir=D:/Ant/apache-ant-1.7.0/lib";
    	String java_lib = " \"-Djava.library.path=D:/Eclipse/eclipse;.;C:/WINDOWS/system32;C:/WINDOWS;D:/Java/jdk1.5.0_11/bin;D:/Maven/maven-2.0.7/bin;D:/Ant/apache-ant-1.7.0/bin;D:/Jonas/Jonas-4.8.6b/bin/nt;C:/Program Files/Rational/common;C:/oracle/ora92/jre/1.4.2/bin/client;C:/oracle/ora92/jre/1.4.2/bin;C:/oracle/ora92/bin;C:/Program Files/Oracle/jre/1.1.8/bin;C:/oracle/ora817/bin;C:/oracle/ora92/lib/;C:/oracle/ora92/jdk/bin/;C:/oracle/ora817/lib/;C:/Program Files/Fichiers communs/GTK/2.0/bin;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;C:/WINDOWS/system32/nls;C:/WINDOWS/system32/nls/FRANCAIS;c:/Program Files/Novell/ZENworks/;C:/WINDOWS/system32/;C:/WINDOWS/system32/Wbem;C:/WINDOWS/system32/nls;C:/WINDOWS/system32/nls/FRANCAIS;C:/Program Files/Novell/ZENworks;C:/Program Files/Macrovision/AdminStudio/8.6/Common;C:/Program Files/Microsoft SQL Server/90/Tools/binn;Z:.;D:/Eclipse/eclipse/configuration/org.eclipse.osgi/bundles/355/1/.cp\"";
    	String classpath = " -classpath D:/Ant/apache-ant-1.7.0/lib/ant-antlr.jar;D:/Ant/apache-ant-1.7.0/lib/ant-apache-bcel.jar;D:/Ant/apache-ant-1.7.0/lib/ant-apache-bsf.jar;D:/Ant/apache-ant-1.7.0/lib/ant-apache-log4j.jar;D:/Ant/apache-ant-1.7.0/lib/ant-apache-oro.jar;D:/Ant/apache-ant-1.7.0/lib/ant-apache-regexp.jar;D:/Ant/apache-ant-1.7.0/lib/ant-apache-resolver.jar;D:/Ant/apache-ant-1.7.0/lib/ant-commons-logging.jar;D:/Ant/apache-ant-1.7.0/lib/ant-commons-net.jar;D:/Ant/apache-ant-1.7.0/lib/ant-jai.jar;D:/Ant/apache-ant-1.7.0/lib/ant-javamail.jar;D:/Ant/apache-ant-1.7.0/lib/ant-jdepend.jar;D:/Ant/apache-ant-1.7.0/lib/ant-jmf.jar;D:/Ant/apache-ant-1.7.0/lib/ant-jsch.jar;D:/Ant/apache-ant-1.7.0/lib/ant-junit.jar;D:/Ant/apache-ant-1.7.0/lib/ant-launcher.jar;D:/Ant/apache-ant-1.7.0/lib/ant-netrexx.jar;D:/Ant/apache-ant-1.7.0/lib/ant-nodeps.jar;D:/Ant/apache-ant-1.7.0/lib/ant-starteam.jar;D:/Ant/apache-ant-1.7.0/lib/ant-stylebook.jar;D:/Ant/apache-ant-1.7.0/lib/ant-swing.jar;D:/Ant/apache-ant-1.7.0/lib/ant-testutil.jar;D:/Ant/apache-ant-1.7.0/lib/ant-trax.jar;D:/Ant/apache-ant-1.7.0/lib/ant-weblogic.jar;D:/Ant/apache-ant-1.7.0/lib/ant.jar;D:/Ant/apache-ant-1.7.0/lib/xercesImpl.jar;D:/Ant/apache-ant-1.7.0/lib/xml-apis.jar;X:/MiseenRecette/Commun/libStd/Jakarta/Ant/V1.5.4/jdom.jar;D:/Eclipse/eclipse/configuration/org.eclipse.osgi/bundles/26/1/.cp/lib/remoteAnt.jar;D:/Java/jdk1.5.0_11/lib/tools.jar;D:/Eclipse/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar";
    	String run = " org.eclipse.ant.internal.ui.antsupport.InternalAntRunner";
    	String args = " -v";
    	String eclipse_home = " -Declipse_home=D:/Eclipse/eclipse";
    	String project_loc = " -Dproject_loc=TEST";
    	String wokspace_loc = " -Dworkspace_loc=${workspace_loc}";
    	String connect = " -Declipse.connect.port=2161";
    	String process = " -Dorg.eclipse.ant.core.ANT_PROCESS_ID=1209386130937";
    	String pde_home = " -Declipse.pdebuild.home=/D:/Eclipse/eclipse/plugins/org.eclipse.pde.build_3.3.0.v20070612/./";
    	String pde_script = " -Declipse.pdebuild.scripts=/D:/Eclipse/eclipse/plugins/org.eclipse.pde.build_3.3.0.v20070612/scripts/";
    	String pde_templates = " -Declipse.pdebuild.templates=/D:/Eclipse/eclipse/plugins/org.eclipse.pde.build_3.3.0.v20070612/templates/";
    	String base_dir = " -Dbasedir=D:/workspace";
    	// String logger = " -logger org.eclipse.ant.internal.ui.antsupport.logger.RemoteAntBuildLogger";
    	String input = " -inputhandler org.eclipse.ant.internal.ui.antsupport.inputhandler.ProxyInputHandler";
    	String build = " -buildfile D:/tt/build.xml";
     
    	Process p = null;
    	String cmd = java + ant_home + ant_lib + java_lib + classpath + run + args + eclipse_home + project_loc
    		+ wokspace_loc + connect + process + pde_home + pde_script + pde_templates + base_dir + input + build;
     
    	System.out.println(cmd);
     
    	try {
    	    p = Runtime.getRuntime().exec("cmd /c call " + cmd);
     
    	    StringBuffer trace = new StringBuffer();
    	    StreamConsumer output = new StreamConsumer(p.getInputStream(), false, System.out, trace);
    	    StringBuffer traceErr = new StringBuffer();
    	    StreamConsumer error = new StreamConsumer(p.getErrorStream(), true, System.err, traceErr);
     
    	    error.start();
    	    output.start();
     
    	    p.waitFor();
     
    	    error.join();
    	    output.join();
     
    	} catch (InterruptedException e) {
    	} catch (IOException e) {
    	    e.printStackTrace();
    	}
     
        }
    Ca pourrait régler le problème mais c'est pas beau du tout... je suis toujours preneur si quelqu'un à mieux...

    Merci à tous ceux qui sauront me guider.

    Angel

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    Bonjour tout le monde...

    je continue à poser mes questions car je n'ai toujours pas trouvé comment faire pour lancer ces scripts ant en ligne de command... (enfin si j'ai un peu avancé)

    Voila mon problème : j'ai trouvé comment lancé un script ant en ligne de command et j'ai créé une classe qui parse un fichier .launch d'eclipse, retire toutes les informations dont j'ai besoin et lance le script ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    System.out.println("Ant Runner started");
    
    	
    	String launchFile = "D:/tt/test.launch";
    	
    	
    	String args = " ";
    	String build = null;
    	String classpath = null;
    	
    	try{
    	    LaunchConfiguration configuration = new LaunchConfiguration(Parseur.parse(launchFile));
    	    
    	    args += configuration.get("org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS");
    	    args = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(args) ;
    	    
    	    build = configuration.get("org.eclipse.ui.externaltools.ATTR_LOCATION");
    	    
    	    classpath = configuration.get("custom.classpath");
    	    
    	    if(args.matches("#^*.-Dproject_loc=.{project_loc}*.$#")){
    		throw new Exception("Pas de -Dproject_loc=${project_loc} possible");
    	    }
    	}catch (Exception e) {
    	    e.printStackTrace();
    	}
    	
    	IProgressMonitor monitor = null;
    	
    	try{
    	    Project project = new Project();
    	    monitor = (IProgressMonitor)project.getReferences().get(AntCorePlugin.ECLIPSE_PROGRESS_MONITOR);
    	}catch (Exception e) {
    	    e.printStackTrace();
    	}
    
    	try {
    	    if (AntRunner.isBuildRunning()) {
    		throw new Exception("Another build is already running");
    	    }
    	    AntRunner runner = new AntRunner();
    
    	    runner.setMessageOutputLevel(Project.MSG_VERBOSE);
    	    runner.addBuildLogger("org.apache.tools.ant.DefaultLogger");
    	    runner.setArguments(args);
    	    runner.setCustomClasspath(null);
    	    
    	    //runner.setCustomClasspath(ClassPathProcess.getClassPath(classpath));
    	    runner.setBuildFileLocation(build);
    
    	    TargetInfo[] info = runner.getAvailableTargets();
    	    for (TargetInfo targetInfo : info) {
    		System.out.println("info : " + targetInfo.getName() + ":" + targetInfo.getProject());
    	    }
    
    	    runner.run(monitor);
    
    	} catch (Throwable e) {
    	    System.err.println("Erreur  : ");
    	    e.printStackTrace();
    	}
    
    	System.out.println("Ant Runner Finished");

    MON PROBLEME :

    j'ai besoin de dépendances externes... tel que jdom.jar... et j'utilise donc setCustomClassPath... mais le problème c'est que lorsque j'utilise ceci toutes les autres dépendances (comme celle des librairies de Ant ) disparaissent...

    COMMENT FAIRE POUR AJOUTER JUSTE UNE OU PLUSIEURS API EXTERNE SANS PERDRE LE CLASSPATH QUE LE ANTRUNNER D'ECLIPSE CREE POUR MOI ??????

    merci beaucoup à toutes les personnes qui pourront me répondre....

    Angel

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Bon ben j'ai résolu mon problème tout seul...
    j'arrive à lancer un de mes scripts ant.... (maintenant faut voir pour les 9 autres... ahahah)

    mais voila comment récupérer le classpath de ant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AntCorePreferences prefs= AntCorePlugin.getPlugin().getPreferences();
    URL[] baseurls = prefs.getURLs();
    quoi de plus logique me dira-t-on.... mais si vous pouvez éviter de me le dire... je préfererai... bonne continuation à tout

    Angel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 22/12/2006, 15h02
  2. [C#]Lancer un script Javascript depuis
    Par Opo dans le forum ASP.NET
    Réponses: 1
    Dernier message: 07/11/2006, 16h08
  3. lancer un script perl depuis un script perl
    Par minusette dans le forum Langage
    Réponses: 7
    Dernier message: 23/08/2006, 12h03
  4. [Apache] Lancer des scripts automatiquement
    Par Jim_Nastiq dans le forum Apache
    Réponses: 2
    Dernier message: 16/05/2006, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo