这段时间在学 Seam。Seam 有一个非常方便的代码生成工具 seam-gen。在将用 seam-gen 生成的代码导入 Eclipse 项目之后,我发现每当我保存对源码的修改之后,Eclipse 都会执行 Ant 任务。对于我这种小菜来说,这是非常令人吃惊的现象。
研究一番之后,发现其实这样很简单。要实现这样的目的无非需要两个文件:.project 和 *.launch 文件。.project 是 Eclipse 的必备文件,所以必定是位于项目的根目录中;*.launch 一般也位于根目录中。
在 seam-gen 生成的 .project 文件中有这么几行代码:
<buildCommand>
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
<triggers>auto,full,incremental,</triggers>
<arguments>
<dictionary>
<key>LaunchConfigHandle</key>
<value><project>/explode.launch</value>
</dictionary>
</arguments>
</buildCommand>
这段代码的意思大致如下:当 anto、full、incremental 触发事件时,explode.launch 所定义的内容会被执行。incremental 应该是当文件增加的意思。auto 和 full 又是什么意思呢?
explode.launch 文件中的部分内容:
<?xml version="1.0" encoding="UTF-8"?>
<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="clean,unexplode,restart,buildtest,"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,"/>
<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="clean,unexplode,restart,buildtest,"/>
<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AUTO_TARGETS" value="explode,buildtest,"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="seamdemo"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/seamdemo/build.xml"/>
</listAttribute>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/seamdemo/build.xml}"/>
</launchConfiguration>
当 auto、full、incremental 发生时,
<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AUTO_TARGETS" value="explode,buildtest,"/>
应该被执行了。explode 和 buildtest 都是 build.xml 中的相应任务。ATTR_ANT_AUTO_TARGETS 从字面上理解也是 Ant 自动任务的意思。
对这两个文件内容的理解就到这份上了。再深入时间恐怕不够,暂时也没有需求。
希望某位 Eclipse 大拿看到本人后可以给予更详细的解释。
问题:
- auto,full,incremental 的具体含义;
- 关于 *.launch 文件的根元素 “launchConfiguration” 的解释;
- 。。。。。。