由于对eclipse基础设施的理解不完全,我有一个问题。
从历史上看,我们的构建过程中有一个难看的东西。它看起来如下:
在eclipse构建整个工作区之后,在本地构建的插件中有一个不完整的东西。它是一些目前在执行特殊插件测试期间构建的数据文件(实际上什么都不测试,但是生成必要的数据)。在工作空间发生任何更改后,无需执行该测试。实际上只有在极少触及的部分代码发生变化之后才需要。但是,如果对代码部分进行了更改,则在更新该特殊数据文件之前,构建将变得不可用。该文件现在存储在CVS中,因为它现在只能在本地创建,但在产品构建中是必要的
我想以这样的方式更改构建过程,即在工作区构建过程中执行此插件测试,因此不必手动运行它。我曾尝试使用org.eclipse.test / library.xml中的模板编写将运行该测试的ant文件,但该插件未加载。我不知道为什么会发生这种情况,但我担心由于我的工作副本中缺少测试插件而会发生这种情况。
我已经阅读了一些关于在批处理模式下运行插件测试的文章,但它们只是增强了我对单独的eclipse拷贝测试开发插件的必要性的感觉。
我们使用ant进行插件构建,这些脚本的整个结构非常复杂,所以我认为在顶层构建过程中进行全局更改是不可能的。我有哪些选项可以完成我的任务?也许有人已经有类似的经历......
请注意,实际上我想摆脱那个测试,转而使用一些特殊的eclipse应用程序,但我认为它现在并不重要,因为我相信我的问题比运行插件测试更通用
答案 0 :(得分:0)
我的猜测是你有一些源文件,当更改时,会强制重建数据文件。重建速度有点慢,所以你不想一直这样做。
我会这样攻击:将所有数据文件所依赖的代码移动到一个项目中。编写一个构建数据文件的ANT脚本。将ANT脚本作为自定义构建器添加到项目中(打开项目属性,然后单击“构建器”)并在项目中的每个更改上运行它。这将通过保存一个输入文件来保持数据文件的最新状态。
答案 1 :(得分:0)
这就是ANT脚本的样子:
<!-- Prepare extension -->
<mkdir dir="${extension_dir}/eclipse"/>
<antcall target="make_symlink">
<param name="target" value="${workspace_loc}"/>
<param name="source" value="${symlink_location}"/>
</antcall>
<!-- Install extension -->
<mkdir dir="${eclipse-home}/links"/>
<echo file="${link_file}">path=${extension_dir}</echo>
<!-- Run test -->
<antcall target="core-test">
<param name="plugin-name" value="testsPlugin"/>
<param name="classname" value="testsPlugin.TestsClass"/>
<param name="data-dir" value="${workspace_loc}/../some_workspace"/>
<param name="plugin-path" value="${workspace_loc}"/>
</antcall>
<!-- Uninstall extension -->
<delete file="${link_file}"/>
<!-- Delete extension -->
<antcall target="delete_symlink">
<param name="source" value="${symlink_location}"/>
</antcall>
<delete dir="${extension_dir}"/>
此脚本应通过“eclipse-home”,“os”,“ws”,“arch”参数进行参数化。其中第一个是slave eclipse实例的路径,最后三个是用于匹配运行平台的属性。在本地构建中,它们可以分别具有osgi.os,ogsi.ws和osgi.arch的值。