将Ant构建器集成到Eclipse中:刷新范围工作集的相对路径

时间:2011-11-16 09:29:25

标签: java eclipse ant

此问题类似于Integrate Ant builder into Eclipse: Error "Variable references empty selection",但要求提供不同的内容。

在我的Eclipse JDT项目中,我有一些我想在编译之前执行的ant任务,所以我在我的Eclipse构建器配置中添加了一个ant构建器。现在,我想为此构建器配置两个选项“完成后刷新资源”和“相关资源的工作集”,以便它们在我的项目中包含特定目录。

两者都允许我使用此dialogue指定“工作集”。问题是,这将在Eclipse构建器配置文件中放置与工作空间相关的路径,因此路径将包含项目名称。

问题是整个项目是在subversion存储库中管理的。 Eclipse配置是存储库的一部分,其他用户使用不同的文件系统布局和可能不同的Eclipse项目名称来检查它。例如,我通常在Eclipse工作区中有相同项目的几个工作副本,每个副本当然都有不同的项目名称。

这就是为什么我正在寻找一种方法如何在Eclipse中指定相对于项目目录的工作集(而不是工作空间目录),或以其他方式定义刷新范围一个构建器,它包含我的项目中的单个目录

我正在使用Eclipse 3.7(Indigo)。

如果我在对话框中配置工作集并在之后查看配置文件,则以下字符串是ATTR_REFRESH_SCOPE选项的值:

${working_set:
<?xml version="1.0" encoding="UTF-8"?>

<resources>

<item path="/MyProject" type="4"/>

</resources>}

清理它看起来像:

${working_set:
  <?xml version="1.0" encoding="UTF-8"?>
  <resources><item path="/MyProject/lib" type="2"/></resources>
}

所以我希望得到“MyProject”部分。我尝试了上述问题的解决方案,并用${build_project:/lib}替换了路径。这没有给出任何错误消息,但似乎没有任何效果(Eclipse不会刷新提到的目录)。

我还尝试用${build_project:/lib}替换整个工作集定义,但这会给出错误消息Unable to restore resource memento

我知道我可以告诉Eclipse在构建器运行后刷新整个项目,但这不是我想要的(它非常慢)。此外,对于“相关资源”配置选项,这意味着构建器在项目中的每次更改后都会不必要地运行。

4 个答案:

答案 0 :(得分:1)

不幸的是,Eclipse对于相对目录并不是很好。

Relative Paths in Eclipse

但是,您可以执行以下操作:

  • 创建新工作区。
  • 从所有计算机上相同的已知位置导入文件。
  • 配置该已知目录内的所有内容。
  • 向其他开发人员提供工作区和设置说明,以便他们使用相同的“已知目录”。

你可以拥有像

这样的东西
C:\YourKnownDir\
    \workspace\
    \src\
    \build\

并使用批处理文件启动eclipse:

start %ECLIPSE_DIR%\eclipse.exe -data .\workspace

如果您要在SVN中包含.project文件,那么应该确实存在预定的完整路径。 EG:

C:\svn

希望有所帮助,但我不知道如何解决这个问题。

答案 1 :(得分:0)

如何在存储库中添加一个文件夹级别?让我们将项目添加到存储库中的一个文件夹中。这样每当项目签出时,它就会创建一个带有项目名称的文件夹 目前,如果您在文件夹workspace1中签出项目。它必须看起来像:

workspace_1\lib

如果在repo中添加一个文件夹级别,即项目名称(例如MyProject),则签出项目的每个人都将获得相同的项目名称。并且项目的多个副本看起来像

workspace_1\MyProject\lib
workspace_2\MyProject\lib

这样你就可以创建具有相同项目名称的项目的多个副本,并且你的脚本可以始终利用这个项目名称的唯一性。

答案 2 :(得分:0)

完全不同的方法:

我认为共享Eclipse配置文件(即提交给SVN的配置文件)的限制非常大;有些人喜欢将他们的依赖库作为磁盘上的源,其他人更喜欢JAR引用;每个用户的项目名称和工作区相对位置都不同,依此类推。正如您所看到的,许多选项都与项目位置(即无法引用其他项目)或工作空间位置有关。

因为我通常都有Maven构建文件,所以我使用maven-eclipse-plugin从它们生成Eclipse配置文件。在运行时有几个选项可供选择,几乎所有内容都可以在构建文件中自定义(如果没有,只需将插件插入到您想要的插件中,并将其与您的构建一起发送.Maven将自动构建该插件,如果需要使用它的用户)。而且插件之间也会共享一些更抽象的设置,所以如果有人坚持使用Netbeans而不是Eclipse,他至少会得到一个初步配置的项目(依赖项,JRE版本,字符集等),而我没有使用过甚至是配置Netbeans。

正副作用:添加或更新库依赖项时,只需要更新一个地方(Maven POM),其余地方可以轻松重新生成。

我确信这不是每个人的方法(特别是如果你不仅将Eclipse用于开发,而且还用于构建最终的工件,使用另一个构建系统可能看起来有点过分)。

答案 3 :(得分:0)

在类似的情况下,我选择刷新“包含所选资源的项目”(正如您所说,它不依赖于项目的名称)并使用“Derived resource”标记尽可能多的文件夹(文件夹的属性) - &gt;资源 - &gt;复选框“衍生”)。 Eclipse将刷新派生资源,但不会尝试验证/重建/等。