此问题类似于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在构建器运行后刷新整个项目,但这不是我想要的(它非常慢)。此外,对于“相关资源”配置选项,这意味着构建器在项目中的每次更改后都会不必要地运行。
答案 0 :(得分:1)
不幸的是,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将刷新派生资源,但不会尝试验证/重建/等。