2009-08-06 94 views
5

我有一個應用程序使用幾個配置文件(讓我們考慮appli.properties這裏)。 這些文件包含幾個取決於環境的值。我們可以找到一些信息,如:如何在構建Eclipse項目期間過濾資源?

server.port=${envi.server.port} 

在另一邊,我有一組屬性文件,每一個環境(dev.properties,homolo.properties等)。 它們包含配置文件中某些屬性的值。我們可以在這裏找到這種屬性:

envi.server.port=4242 

我的構建由Maven2處理。一切工作正常。

但是,我現在需要將我的項目導入到Eclipse中。 我主要關心的是配置文件過濾。事實上,如果我沒有修改我的項目的Eclipse參數中的任何內容(在mvn eclipse:eclipse命令之後),那麼我的所有配置文件將保留屬性項(即${envi.server.port})而不是它們的值。而這樣的配置文件,我的應用程序將無法在Eclipse中運行...

所以,我想兩種解決方案:

  • 一個全Maven的解決方案,使用m2eclipse插件。我在項目配置中添加一個Maven Builder,然後每次構建時都要對這些文件進行過濾。
  • Ant(僅在Eclipse中使用)。我hardly定義了一個模擬Ant中文件的Maven2過濾的任務。這項任務僅用於過濾,不編譯。

這兩個解決方案的共同問題是過濾是在每一個操作(基本上保存在Java類的版本),然後花費時間。然而第二種解決方案比第一種解決方案(超過10秒)更快(3秒)。

您如何看待我的方法? 你會怎麼做,以更好的方式?

+0

我不理解使用Maven過濾屬性的問題。 – 2009-08-06 16:08:21

+0

@Mike如果我正確理解這一點,那麼Maven構建會在每次更改時運行並需要大約10秒才能完成過濾,這是干擾的。 – 2009-08-06 16:51:51

回答

2

如果資源沒有經常更改,您可以將Maven構建設置爲僅在Clean構建後運行,然後它不會干擾太多,但這對於加快構建並沒有做任何事情。

至於過濾更快,我不知道任何其他簡單的機制,將會有所幫助,正如你所說的,你需要Ant或Maven來運行過濾,並且它們都需要一些時間來設置在建築之前,造成減速。

如果這造成了很多問題,您可以編寫一個自定義的Incremental Eclipse builder對增量進行過濾。這應該相當快,但顯然要寫更多的努力。

相關問題