2011-09-07 51 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,但我的解決方案几乎可以工作:-) –

相關問題