为了构建一个插件,您可能会指定 clean,build.sources,build.jars,zip.plugin,refresh。为了构建一个功能部件,您可能会指定clean,build.sources,build.jars,zip.distribution,refresh。您或许会想要在开始时使用 clean 来强制重新生成所有结果,经常会有这种情况。尽管 Ant 处理过程将基于输入的变化重新执行所需要的步骤,但是有一些变化不会触发所有需要的处理过程。测试结果表明如果您改变了一个 Java 源文件,相应的源文件压缩包将会更新,但是类不会被重新编译,运行期 JAR 也不会被更新。所以安全起见,建议您先将输出结果清空,以保证您在重新构建后所使用的是对应于当前源文件的运行期版本。
讨论方案
为了进行讨论,我们先描述一下只有一个功能部件和插件时在运行期配置中需要的内容。
正如您所看到的文件名,虽然这些文件大部分属于运行期环境,还是有一些文件不是您想要与其他人共享的(例如,您的设计文档)。
包含策略――指出所需要的部分
至少到刚开始时,最简单的方法是,在构建过程中将您要打包的部分作为在运行期配置中功能部件或插件的一部分而列出来。相应的 build.properties 文件分别如下所示:
排斥策略――指定不需要的或私有的部分
另一种方法是把您不想打包的部分在构建过程中作为功能部件或插件的一部分列出来。这不仅要包括您不想共享的文件,还要包括构建过程中创建的文件和目录(有一些是临时的)。这种方法用到的 build.properties 文件如下:
如果给定功能部件或插件的 id 值为 com.your.feature.id 或者 com.your.plugin.id,那么您在使用排斥策略的时候还需要在文件中包括以下条目:
com.your.feature.id_1.0.0.bin.dist.zip,\
com.your.feature.id_1.0.0.jar,\
com.your.plugin.id_1.0.0.jar,\
|
zip 条目将使生成的组件压缩包不被 update JAR 或者组件压缩包自己所包含。JAR 条目将使生成的功能部件或插件的 update JAR 不被组件压缩包或者 update JAR 自己所包含。当您的组件压缩包或者 update JAR 看起来比它应该的大小要大,或者在每次您进行编译时包的大小呈跳跃式增长,说明您应该执行以上步骤了。您需要在适当的功能部件或者插件的 build.properties 文件中加入以上条目来解决这个问题。
对文件或者结构变化的响应
除了以上提到的之外,当一个新的文件或目录添加到功能部件或者插件时,还有必需的响应需要考虑。我们的意思是您得让您的功能部件和插件能应付可能的改变,也就是说它们分别需要一个feature.properties文件和一个plugin.properties文件。当您用包含策略时,您需要给.properties 文件添加一个适当的属性,如果是使用排斥策略的话就不用这样做了。
不论哪种方法,如果您把一个文件添加到一个目录,那么不需要做任何其他的改动。对于新添加的文件,如果使用的是包含策略,它会被发送处理,如果使用的是排斥策略,它将不会被发送处理。这实际上是您可能应该要考虑使用不同的目录来存放不同的文件的原因。例如,您的插件所用到的所有图片所在的目录应该被包含在内,而一个开发过程中存放插件的设计讨论或文档的目录则不然。
最坏的情形是当您忘记对 build.properties 进行更新时:会发生运行期失败或生成内容存在差错的产品。如果您使用包含策略,新加入的文件或目录在打包后是不可用的,这有可能会导致您的插件不能用或者显示出 Eclipse 默认的图标(红盒子)。如果是使用排斥策略添加新文件或目录,这些文件或目录的内容在打包过程中会被包含进来。根据您的风格选择适当的方法,从而把您忘记执行更新时的风险降到最低。这将取决于您所面临的主要问题:是功能部件或插件不能运行,还是其他人本不应该看到运行期目录下的文件。
(责任编辑:战莹)
<<上一页
1
2