2010-11-26 14 views
1

J'aimerais implémenter un plugin eclipse pour ajouter un script shell en tant que constructeur d'outils externe à un projet. Après avoir appuyé sur le menu du plugin, le fichier de configuration d'éclipse .project sera ajouté comme suit. Et un autre fichier de configuration .externalToolBuilders/lstest [Builder] .launch serait généré.Une question à propos de la programmation du générateur d'outils Eclipse

<buildCommand> 
     <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name> 
     <triggers>full,incremental,</triggers> 
     <arguments> 
      <dictionary> 
       <key>LaunchConfigHandle</key> 
       <value>&lt;project&gt;/.externalToolBuilders/lstest [Builder].launch</value> 
      </dictionary> 
     </arguments> 
    </buildCommand> 

Actuellement, je pourrais ajouter à .project en utilisant le code suivant. Mais Comment puis-je générer .externalToolBuilders/lstest [Builder] .launch? Merci beaucoup.

org.eclipse.core.resources.ICommand command = pDesc.newCommand(); 
    command.setBuilderName("org.eclipse.ui.externaltools.ExternalToolBuilder"); 
Map args = command.getArguments(); 
args.put("LaunchConfigHandle", "<project>;/.externalToolBuilders/lstest [Builder].launch"); 
args = conf.getAttributes(); 
command.setArguments(args); 
org.eclipse.core.resources.ICommand command = BuilderUtils.commandFromLaunchConfig(projects[i],conf); 
org.eclipse.core.resources.ICommand[] commands = pDesc.getBuildSpec(); 
org.eclipse.core.resources.ICommand[] nc = new ICommand[commands.length + 1]; 
System.arraycopy(commands, 0, nc, 1, commands.length); 
nc[0] = command; 
pDesc.setBuildSpec(nc); 
projects[i].setDescription(pDesc, null); 

Répondre

0

À partir du menu appuyez sur « Exécuter/Outils externes/externes configurations outils ... » là, vous pouvez définir les coureurs de fourmis, les coureurs du programme. D'un autre côté, je ne suis pas sûr que vous pouvez attacher directement un script shell mais l'appeler depuis ant.

+0

Merci pour vos commentaires! – user2510797

0

Pour générer lstest.launch dans le dossier .externalToolBuilders. Ajoutez les lignes suivantes avant vos codes

ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); 
ILaunchConfigurationType antType = 
launchManager.getLaunchConfigurationType(IExternalToolConstants.ID_PROGRAM_BUILDER_LAUNCH_CONFIGURATION_TYPE); 

ILaunchConfigurationWorkingCopy workingCopy = antType.newInstance(BuilderUtils.getBuilderFolder(project, true), "lstest"); 
workingCopy.setAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND, false); 
workingCopy.setAttribute(IExternalToolConstants.ATTR_LOCATION, "${project_loc}\\YOUR_SHELL_SCRIPT"); 
workingCopy.setAttribute(....); 


ILaunchConfiguration ilc = workingCopy.doSave(); 

create ANT builder programmatically