2

以下场景:

我们想为我们的 Eclipse 项目使用一个根文件夹。自从我看到,那个Eclipse 不支持多用户工作空间(许多用户同时在同一个工作空间上),我正在寻找另一种解决方案。

我随机创建了一个没有默认位置的“新项目” ,而不是我们在工作区之外的位置(每个客户都有自己的工作区)。

Eclipse 将在{workspace}/.metadata/.plugings/org.eclipse.core.resources/.projects/下生成

一个文件夹,其中仅包含有关项目位置和其他一些数据(.safeable、.tree)的信息。因此,可以重命名一个项目,它会在其他客户端自动刷新。在大多数情况下,它看起来并不那么糟糕。

我的问题:我对此有一种不好的感觉。要通过源代码创建那些“链接项目”,我需要使用“内部包”。而且我不确定这是否是正确的行为。

那么你们将如何处理一些用户需要在 Eclipse 应用程序中共享二进制数据的场景。SVN 和 .git 对二进制文件不太满意。

我很感激任何建议。谢谢。

更新

我是如何解决问题的:

每个用户都有自己的工作空间。除此之外,还有“中央工作区”。它只是一个普通的工作区,但用户工作区中的每个 IProject 都从这里链接。

这是链接位于自己工作区之外的 IProject 的源代码:

IProjectDescription description = null;
description = ResourcesPlugin.getWorkspace().loadProjectDescription(new Path(path +"/.project"));
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(description.getName());
project.create(description, IProject.FORCE, null);
if (!project.isOpen()) {
    project.open(null);
}

您应该在WorkspaceJob中运行此代码。

之后,您可以使用实际上不在您的工作区中的 IProject 使用无限的用户。在这种情况下,您不使用任何内部包。

4

1 回答 1

2

使用 Eclipse 可以共享项目,但您需要记住一些重要的点:

Eclipse 不希望其他人修改项目中的文件。将编译器分配给项目时尤其如此。如果你有一个 Java 项目,那么就有一个 Java 编译器,如果其他人更改了输出文件夹中的文件,这个编译器会变得非常混乱。从不共享具有编译器/构建器的项目。

另一种解决方案是将二进制数据放在文件系统上的共享位置,然后使用链接将它们导入到您的项目中。请参阅创建链接资源的联机帮助。这不会复制文件,它只是使资源出现在视图中。

因此,如果您需要查看文件,这种方法效果很好,但是当项目中的代码需要访问它们时(例如,单元测试)它没有帮助,因为这些链接是纯虚拟的:它们只存在于 Eclipse UI 中。

最后,SVN 和 git 都可以很好地处理二进制数据。当您结帐/更新/提交时,它们可能需要大量内存,但如果数据没有改变,您应该完全没问题(除非数据大于 1GB)。

于 2012-08-06T10:12:10.400 回答