使用ILaunchConfigurationMigrationDelegate

时间:2013-01-23 14:02:12

标签: eclipse eclipse-plugin

我不明白Eclipse Launch Configrations(ILaunchConfiguration)的迁移是如何工作的。在我的梦中,我很乐意拥有以下内容:

  1. 我的插件1.0版用于创建启动配置引用文件something_1.0/foo
  2. 该插件已升级到2.0版,该版本还删除了插件的所有旧启动配置中仍引用的文件
  3. 旧的启动配置会自动升级,以便引用something_2.0/foo而不是不存在的something_1.0/foo
  4. 尽管我写了并连接了ILaunchConfigurationMigrationDelegate的相应实现,但第3步遗憾地是无效的。似乎代码永远不会被执行。

    何时迁移配置?根据代码,有Migrate button,我找不到。根据文档配置,可能会自动迁移。这是怎么触发的?

    谢谢, 卡斯滕

1 个答案:

答案 0 :(得分:0)

implementation of this interface应在扩展点声明。

您可以参考JDT本身的实现 org.eclipse.jdt.internal.launching.JavaMigrationDelegate

请注意,启动快捷方式将配置类型指定为通过扩展名定义的配置类型。

   <extension
     point="org.eclipse.debug.ui.launchShortcuts">
  <shortcut
        class="org.eclipse.jdt.debug.ui.launchConfigurations.JavaApplicationLaunchShortcut"
        description="%JavaLaunchShortcut.description"
        helpContextId="org.eclipse.jdt.debug.ui.shortcut_local_java_application"
        icon="$nl$/icons/full/etool16/java_app.gif"
        id="org.eclipse.jdt.debug.ui.localJavaShortcut"
        label="%JavaApplicationShortcut.label"
        modes="run, debug">
     <contextualLaunch>
       <enablement>
         <with variable="selection">
           <count value="1"/>
            <iterate>
             <and>
              <adapt type="org.eclipse.jdt.core.IJavaElement">
                <test property="org.eclipse.jdt.core.isInJavaProject"/>
              </adapt>
              <or>
                <test property="org.eclipse.jdt.launching.hasMain"/>
                <test property="org.eclipse.jdt.launching.isContainer"/>
                <test property="org.eclipse.jdt.launching.isPackageFragment"/>
                <test property="org.eclipse.jdt.launching.isPackageFragmentRoot"/>
              </or>
             </and>
            </iterate>
           </with>
       </enablement>
     </contextualLaunch>
     <configurationType
           id="org.eclipse.jdt.launching.localJavaApplication">
     </configurationType>
     <description
           description="%RunJavaLaunchShortcut.description"
           mode="run">
     </description>
     <description
           description="%DebugJavaLaunchShortcut.description"
           mode="debug">
     </description>
  </shortcut>