将Ant构建器集成到Eclipse中:错误"变量引用空选择"

Phi*_*ler 16 java eclipse ant

我在Eclipse JDT项目中有一些Ant任务,我想在每次编译之前执行它,所以我在我的Eclipse构建器配置中添加了一个Ant构建器.作为构建文件的位置,我输入了

${workspace_loc:${project_path}/build.xml}
Run Code Online (Sandbox Code Playgroud)

希望有任何绝对路径,或者项目名称,在这里.Eclipse配置是存储库的一部分,其他用户使用不同的文件系统布局和可能不同的Eclipse项目名称来检查它.例如,我通常在Eclipse工作区中拥有同一项目的多个工作副本,每个副本当然都有不同的项目名称.

这大部分时间都有效.但是,我有时会在对话框中收到以下错误消息:

构建期间发生错误.
项目"MyProjectName"上运行构建器"集成外部工具生成器"的错误.
变量引用空选择:$ {project_path}
变量引用空选择:$ {project_path}

这似乎发生在Eclipse决定构建项目时,而在Package Explorer中没有选择项目的资源.我可以通过在项目中创建一个虚拟文件,删除Eclipse外部的文件,在Eclipse中选择它并按下来重现它F5.Eclipse会注意到该文件不再存在,将其从Package Explorer中删除(因此不再选择任何内容),然后构建项目,并给出错误消息.

虽然为每个编译运行Ant任务并不是那么重要,但我不希望有这样的错误消息框会让用户感到困惑.

那我该怎么办?

  • 以不同的方式引用build.xml文件,以便问题消失,或者
  • 解决问题,或
  • 抑制此特定错误的错误对话框?

任何帮助,将不胜感激.我正在使用Eclipse 3.7(Indigo).

Eft*_*mis 17

显然,它在转换对变量($ {project_path})的引用时存在问题......对变量的引用($ {workspace_loc}).

您可以尝试使用$ {build_project}变量

${build_project:/build.xml}
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.


小智 9

您在Eclipse的UI中遇到了一些不便.逻辑表明,当您打开项目时,应填充有关已打开项目的变量.但他们不是,因为由于一个错误或其他原因,代码在焦点转移到其他地方后杀死了它们.

因此,作为一种解决方法,您可以:

  1. 将完整路径放到xml文件中
  2. 在启动外部工具之前,单击左侧的项目(在Project Explorer视图中),然后按启动按钮.

单击项目(文件夹图标)将填充变量

顺便说一下,我觉得${workspace_loc}${project_path}/build.xml还可以.

  • 直到 2015 年,任何人都无法解决这个问题:-( 当我在更改代码后想重新运行失败的单元测试时,我总是遇到这种问题。 (2认同)
  • @Thomas:同意了.我在启动配置中使用$ {project_loc}作为VM命令行参数的一部分.启动配置明确分配给eclipse项目.但是当项目资源管理器中的另一个项目具有焦点时,启动启动配置时会出现错误,并且当正确的项目具有焦点时它会起作用.不是人们所期望的 (2认同)