将启动程序添加至平台

插件可以通过使用 org.eclipse.debug.core.launchConfigurationTypes 扩展点将启动配置类型添加至平台。此扩展点允许您使用唯一标识来声明配置类型。您必须提供 ILaunchConfigurationDelegate 的相应实现。该代表负责以指定的方式启动其启动配置。您可以有选择地实现 ILaunchConfigurationDelegate2, 它增强代表接口以允许您的代表异常中止启动、在启动之前在工作空间中构建相应的项目以及控制如何创建在启动中使用的启动对象。

除定义该代表之外,您还可以指定哪些启动方式受代表支持以及当对用户显示此类型的启动程序时应该使用的名称。

以下标记显示 Java 工具如何声明用于启动本地 Java 程序的 Java 启动配置:

<extension point = "org.eclipse.debug.core.launchConfigurationTypes">
   <launchConfigurationType 
   id="org.eclipse.jdt.launching.localJavaApplication"
	   name="%localJavaApplication"
   delegate="org.eclipse.jdt.internal.launching.JavaLocalApplicationLaunchConfigurationDelegate"
   modes= "run, debug"
	   sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"
       sourcePathComputerId="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer">
   </launchConfigurationType>
 </extension>

此扩展定义一个启动配置代表,该启动配置代表可以用来运行或调试使用本地 Java 启动配置启动的程序。

定义新的启动方式

我们先前提到过平台定义用于运行、调试程序或对程序进行概要分析的启动方式。将通过使用 org.eclipse.debug.core.launchModes 扩展点来定义这些方式。此扩展点允许您通过定义启动方式的字符串方式名和应该对用户显示以描述该方式的标签,来声明启动方式。以下标记显示平台的三个标准启动方式的定义:

<extension point="org.eclipse.debug.core.launchModes">
	<launchMode
		label="%run"
		mode="run">
	</launchMode>
	<launchMode
		label="%debug"
		mode="debug">
	</launchMode>
	<launchMode
		label="%profile"
		mode="profile">
	</launchMode>
</extension>   

注意,该方式未与任何特定启动配置类型相关联。如上所示,当为配置类型指定启动代表时将发生此关联。

定义启动代表

由于可以独立于启动配置类型指定启动方式,因此,有可能定义不是由启动配置的原始代表实现的新方法。在这种情况下,插件可以定义一个用于实现特定启动配置类型的特定方式的启动代表。可以通过使用 org.eclipse.debug.core.launchDelegates 扩展点来完成此操作。此扩展点允许您定义一个用于实现给定配置类型的指定方式的启动代表。以下标记显示如何定义用于对本地 Java 应用程序进行概要分析的代表:

<extension point="org.eclipse.debug.core.launchDelegates">
<launchDelegate
   id="com.example.MyJavaProfileDelegate"
   delegate="com.example.MyJavaProfileDelegate"
   type="org.eclipse.jdt.launching.localJavaApplication"
   modes="profile">
  </launchDelegate>
</extension>   

指定代表的方式类似于定义启动配置类型时进行的指定,但有一种情况例外,这就是将启动配置类型与受支持的方式一起指定。正如前面所看到的那样,代表必须实现 ILaunchConfigurationDelegate,但可以有选择地实现 ILaunchConfigurationDelegate2 以便对启动顺序有更多的控制。

其它参考

We Have Lift-off: The Launching Framework in Eclipse 提供了一个用于定义自己的启动类型的完整示例。