2012-05-02 16 views
2

考慮一個需要爲每個Eclipse項目解析不同配置文件的配置類。Eclipse:將項目名稱作爲VM參數獲取?

舉例來說,如果Configuration類是從Project1調用,它應該解析special/path/fileX,如果正在從Project2調用,它應該解析special/path/fileY

我試過using Eclipse's {project_name},但意外的是被解析到項目光標,而不是當前類的父項目被突出顯示。

任何想法我怎麼能區分不同項目在Eclipse運行時,最好使用JVM參數?

+0

你爲什麼不從調用傳遞文件路徑/文件名作爲參數來配置類? –

+0

我不明白這個問題,這段代碼在哪裏運行?在IDE中,還是RCP應用,還是其他? –

+0

我想單點選擇。 「Configuration」類是從項目中的許多類中調用的 - 我希望能夠一次更改整個項目的文件。 –

回答

2

這是一種解決方法你描述的問題做什麼,但我想這是一個更好的解決方案,因爲它是獨立於Eclipse和容易生產工作了。

簡單地通過classpath加載相同的文件,無論你從開始這個項目其中:

/my/file/from/classpath.txt 

但是把這個文件只在PROJECT1/Project2中,使得各種文件互相根據自己排除您的設置:

/Project1/src/my/file/from/classpath.txt 
/Project2/src/my/file/from/classpath.txt 

其中src是Java源文件夾。現在你仍然可以使用你的JVM參數來覆蓋這個參數,或者如果缺少上面的參數就提供默認參數。

0

我認爲最簡單的方法是使用Eclipse的運行配置。只需創建儘可能多的配置,提供所需的所有JVM參數,然後使用它們啓動。這也將是非常接近你要在生產模式

+0

謝謝。問題在於用戶需要爲每個JUnit定義一個不同的運行配置,這很麻煩。 –

0

,或者你可以去你的Eclipse的安裝JRE的和具有的配置設置爲JVMArgs只是你將不得不督促的方式。

如果需要,你可以有每ENV的JRE的差異副本。

另外,如果從IDE運行,則可以獲得 System.getProperty(「user.dir」) 這應該是項目的根目錄。

該系統屬性可用於跟蹤被調用者。更妙的是,設置安裝了JRE的JVM參數以是這樣

-Dtheflaginprod=${project_loc} 

project_loc = absolute path of the the project (/usr/projects/project1) 
project_path = project name relative to the workspace (/project1)