0

由于对 eclipse 基础设施的不完全理解,我遇到了一个问题。从历史上看,我们在构建过程中有一件丑陋的事情。如下所示:
在 eclipse 构建整个工作区之后,在本地构建插件中有一件不完整的事情。它是当前在执行特殊插件测试期间构建的一些数据文件(实际上什么都不测试,但会生成必要的数据)。在工作区发生任何更改后,无需执行该测试。实际上,只有在更改了很少触及的部分代码之后才需要这样做。但是,如果对这部分代码进行了更改,那么在更新该特殊数据文件之前,构建将变得不可用。该文件现在存储在 CVS 上,因为现在它只能在本地创建,但在产品构建中是必需的。
我想更改构建过程,以便在工作区构建过程中执行此插件测试,因此无需手动运行它。我尝试编写 ant 文件,该文件将使用 org.eclipse.test/library.xml 中的模板运行该测试,但插件没有加载。我不知道为什么会发生这种情况,但我担心这可能是由于我的 eclipse 工作副本中缺少测试插件而发生的。
我已经阅读了一些关于以批处理模式运行插件测试的文章,但它们只会加强我对测试开发插件的单独 Eclipse 副本的必要性的感觉。
我们使用 ant 进行插件构建,这些脚本的整个结构非常复杂,所以我认为在顶层构建过程中进行全局更改是不可能的。我必须完成哪些任务?也许有人已经有过类似的经历......

请注意,实际上我想摆脱该测试以支持一些特殊的 Eclipse 应用程序,但我认为现在这并不重要,因为我相信我的问题可能比运行插件测试更普遍。

4

2 回答 2

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”参数进行参数化。首先是从 Eclipse 实例的路径,最后三个是用于匹配运行平台的属性。在本地构建中,它们可以分别具有 osgi.os、ogsi.ws 和 osgi.arch 的值。

于 2009-10-26T09:31:55.700 回答
0

我的猜测是你有一些源文件,当它们被改变时,会强制重建数据文件。重建有点慢,所以你不想一直这样做。

我会这样攻击:将数据文件所依赖的所有代码移动到一个项目中。编写一个构建数据文件的 ANT 脚本。将该 ANT 脚本作为自定义构建器添加到项目中(打开项目属性,然后单击“构建器”)并在项目中的每次更改时运行它。只需保存其中一个输入文件,即可使您的数据文件保持最新。

于 2009-10-11T10:40:52.037 回答