2011-09-07 41 views
1

我需要在Eclipse打开时从命令行运行Maven。由于这可能会混淆Eclipse,我将这两个配置为使用不同的输出文件夹(Maven写入target,Eclipse m2e使用target-eclipse)。这工作得很好。如何从JUnit测试中看出Eclipse项目是否已打开?

但是在我的一个单元测试中,我需要加载属于某个项目但不在类路径中的类。基本上,我建立了自己的URL类加载器。现在,我遇到了一个问题:要添加哪个类文件夹?

如果项目是开放的,target-eclipse/classes是正确的选择,否则我应该使用target/classes

假设我知道Eclipse文件夹和工作区文件夹。我如何从Eclipse的子进程(而不是Eclipse插件)中运行的Java代码告诉哪些项目是开放的,哪些不是?

该文件夹的存在不是一个好的标准,因为在关闭项目时该文件夹没有被删除。

[编辑]基本上我的问题是:Eclipse中必须存储信息$workspace/.metadata$ECLIPSE_HOME/configuration地方。我需要看哪个文件?

回答

1

文件[Workspace_Home]/.metadata/.lock告诉您工作区已打开。

工作区中项目的列表和设置为[Workspace_Home]/.metadata/.plugins/org.eclipse.core.resources/.projects

好像开放Java项目有一个文件夹[Workspace_Home]/.metadata/.plugins/org.eclipse.core.resources/.projects/[Project_name]/.indexes,关闭没有它。 - 我仔细检查过,看起来我错了。

但我只是检查了封闭的Java项目有一个文件:[Workspace_Home]/.metadata/.plugins/org.eclipse.core.resources/.projects/[Project_name]/org.eclipse.jdt.core/state.dat,而打开的项目没有它。

-1

我只是使用一些配置参数(例如系统属性),告诉文件夹在哪里。有关如何在使用Maven运行测试时传递系统属性的信息,请参阅http://maven.apache.org/plugins/maven-surefire-plugin/examples/system-properties.html。本页中的第一个示例显示了如何将构建目录作为系统属性传递。

+0

正如我所说:我知道该文件夹。我如何检查项目是否开放? –

+2

好的。我似乎误解了这个问题。也许这只是因为如果某些项目在Eclipse中打开,使得某些单元测试做了一些不同的事情,这对我来说似乎是一个完全荒谬的事情。你能详细说明为什么你需要这个吗?一个文件夹是一个文件夹,并且是否在Eclipse中打开项目是完全不相关的。 –

+0

我的JUnit测试启动了Jetty服务器,并且如果不同项目中的资源发生更改,我需要重新启动实例。我无法添加项目,因为Eclipse会始终抱怨,类结构的更改会阻止部署。我可以使用JRebel,但我的解决方案几乎可以工作:-) –