功能部件和插件定制构建步骤
在 V3.2 中新增了一项功能,即允许功能部件或插件在它自己的构建过程中添加定制步骤。这些定制步骤可用于完成诸如在编译后检查字节码、为文档的帮助文件建立索引以及将其他文件复制到捆绑软件之类的任务。
要使用定制目标,功能部件或插件必须在它的 build.properties 文件中定义 customBuildCallbacks
属性;此属性值是包含定制目标的 XML 文件相对于该功能部件/插件的根的位置。在
org.eclipse.pde.build/templates/plugins 和 org.eclipse.pde.build/templates/features 中都提供了名为
customBuildCallbacks.xml
的模板,这些模板包含受支持的定制目标。您可以将这些模板复制到功能部件/插件中并根据需要进行修改。将使用设置了
failonerror="false" 的子 Ant 任务来调用定制目标。因此,即使定制
XML 文件未包含特定目标或者发生了错误,也将继续进行构建。
插件
生成的用于构建插件的 build.xml 包含几个用于执行特定任务的目标。“PDE 构建”允许插件提供完成特定任务之前和之后调用的定制前目标和后目标。除了任何已定义的 Ant 属性以外,还可以将几个特定的属性传递给每个定制目标。下列目标支持定制回调:
- build.jars:build.jars
目标将依次调用为此捆绑软件构建的每个编译目标。它支持 pre.build.jars 和 post.build.jars 目标,将分别在调用所有编译目标之前和之后调用这两个目标。前目标和后目标都具有 build.result.folder 属性,此属性是构建结果的复制目标文件夹。
- 编译目标:build.xml 为所构建的每个 JAR 定义一个编译目标(例如,@dot 表示捆绑软件本身,即 library.jar)。每个编译目标都支持 3 个定制回调:
- pre.<编译目标>:在编译源文件之前调用此回调。它具有下列属性:
- target.folder:已编译的类文件的存储文件夹。
- source.folder<N>:要编译的源代码所在的源代码文件夹(例如,source.folder1 和 source.folder2 等等)。
- <编译目标>.classpath:引用编译过程中将要使用的类路径所在的 Ant 路径结构(例如,@dot.classpath 和 library.jar.classpath)。
- post.compile.<编译目标>:在编译源代码之后,但在对类文件进行
JAR 压缩或将它们复制到构建结果文件夹之前,将调用此目标。此目标的属性与 pre.<编译目标> 目标的属性相同。
- post.<编译目标>:在编译目标结束过程中,在将结果复制到构建结果文件夹之后,将调用此目标。它具有下列属性:
- jar.Location:编译结果所在的 JAR 或文件夹。
- <编译目标>.classpath:引用编译过程中所使用的类路径所在的 Ant 路径结构。
- build.sources:此目标构建每个编译目标的源代码
ZIP。它支持 pre.build.sources
和 post.build.sources
目标。这两个目标都具有 build.result.folder 属性,这是源代码 ZIP 文件的复制目标文件夹。
- gather.bin.parts:此目标将构建结果(即,捆绑软件中包括的 JAR
以及任何其他文件)复制到最终目标目录。这也是替换清单文件中的版本限定符的目标目录(请参阅版本限定符)。它支持
pre.gather.bin.parts 和
post.gather.bin.parts 目标。前目标和后目标具有两个属性:
- build.result.folder:构建结果所在的文件夹。
- target.folder:构建结果和捆绑软件内容的复制目标文件夹。
- gather.sources:此目标收集捆绑软件的源代码 ZIP。它支持 pre.gather.sources 和 post.gather.sources 目标。前目标和后目标都具有 target.folder 属性,此属性是源代码的复制目标文件夹。
- gather.logs:此目标收集构建过程中生成的日志文件。它支持 pre.gather.logs 和 post.gather.logs。前目标和后目标都具有 destination.temp.folder 属性,此属性是日志文件的复制目标临时文件夹。
- clean:此目标执行清除,它支持
pre.clean 和 post.clean
目标。前目标和后目标具有下列属性:
- plugin.destination:最终捆绑软件的复制目标文件夹。
- build.result.folder:构建结果的复制目标文件夹。
- temp.folder:这是一个临时文件夹,在将结果复制到最终目标之间,将把它们存储在此文件夹中。
功能部件
为功能部件生成的 build.xml 只支持 gather.bin.parts 目标的定制构建回调。此目标将调用包括的所有功能部件和插件的该
gather.bin.parts 目标。它支持 pre.gather.bin.parts 和 post.gather.bin.parts。这两个目标都具有下列属性:
- destination.temp.folder:插件的复制目标目录。
- feature.directory:此功能部件的文件的复制目标目录。