以下场景:
我们想为我们的 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,这些 IProject 并不真正位于您的工作区中,并且具有无限的用户数。在这种情况下,您不使用任何内部包。
最佳答案
可以使用 Eclipse 共享项目,但您需要记住一些重要的要点:
Eclipse 不希望其他人修改项目中的文件。当编译器被分配给项目时尤其如此。如果您有一个 Java 项目,则有一个 Java 编译器,如果其他人更改了输出文件夹中的文件,则该编译器会感到非常困惑。 从未共享具有编译器/构建器的项目。
另一个解决方案是将二进制数据放在文件系统上的共享位置,然后使用链接将它们导入到您的项目中。请参阅 Creating linked resources 的在线帮助。这不会复制文件,它只是使资源出现在 View 中。
因此,如果您需要查看这些文件,这种方法很有效,但当项目中的代码需要访问它们(例如,单元测试)时,这种方法就没有帮助了,因为这些链接是纯虚拟的:它们仅存在于 Eclipse UI 中.
最后,SVN 和 git 都可以很好地处理二进制数据。当您 checkout /更新/提交时,它们可能需要大量内存,但如果数据没有更改,则应该完全没问题(除非数据 > 1GB)。
关于eclipse - 在工作空间外使用 eclipse 项目(多用户),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11825032/