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

2022-09-02 14:12:03

这个问题类似于将Ant构建器集成到Eclipse中:错误“变量引用空选择”,但要求不同的东西。

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

两者都允许我通过这一对话具体说明一个“工作集”。问题在于,这会将路径放在 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”部分从中解脱出来。我尝试了上述问题的解决方案,并将路径替换为.这不会给出任何错误消息,但它似乎没有效果(Eclipse不会刷新提到的目录)。${build_project:/lib}

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

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


答案 1

不幸的是,Eclipse在相对目录方面并不好。

Eclipse 中的相对路径

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

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

你可以有这样的东西

C:\YourKnownDir\
    \workspace\
    \src\
    \build\

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

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

如果要将 .project 文件包含在 SVN 中,则确实应该有一个预先确定的完整路径。CG|

C:\svn

希望这有帮助,但我不知道任何其他方法来解决这个问题。


答案 2

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

workspace_1\lib

如果您在存储库中添加一个文件夹级别,即项目名称(例如 在这里),每个查看项目的人都将获得相同的项目名称。和项目的多个副本将如下所示MyProject

workspace_1\MyProject\lib
workspace_2\MyProject\lib

通过这种方式,您可以始终创建具有相同项目名称的项目的多个副本,并且您的脚本可以始终利用项目名称的这种唯一性。


推荐