2010-11-09 46 views
0

我們有一個項目使用另一個組提供的Web服務。他們爲Web服務提供3套JAR,每套環境提供一套(Dev vs Test vs Prod)。與不同環境相關聯的JAR的最佳做法

在Eclipse中構建Dev/Test/Prod具有不同JAR的項目的最佳方式是什麼?這是我的想法是:

  • WEB-INF/lib目錄< - 所有常見的JAR何去何從
  • WEB-INF/lib_dev < - 只爲特定的開發-JAR文件
  • WEB-INF/lib_test < - 僅適用於特定於測試的JAR
  • WEB-INF/lib_prod < - 僅適用於特定於Prod的JAR。

我可以使用一個Ant腳本來爲特定環境選擇常用lib以及lib。如果我採用這種方案,是否有一種簡單的方法可以告訴Eclipse在缺省情況下查看lib和lib_dev(用於編譯和Eclipse WAR創建)?還是有更好的方法來建立這樣的項目?

+0

我很好奇什麼情況會讓你在不同的環境下需要不同的罐子。 – Buhb 2010-11-09 22:23:10

+0

外部組構建Web服務併發布JAR文件以訪問Web服務。他們爲每個環境提供不同的JAR文件(Dev vs Test vs Prod)。我無法控制這個過程。 – Shane 2010-11-10 13:55:42

+0

你有沒有達到這個解決方案/結論?如果你這樣做,將它與社區分享是一件好事。 – 2010-11-15 17:29:14

回答

1

我認爲最好的方法是在Eclipse(M2Eclipse)和Maven倉庫(例如Nexus)中使用Maven項目,該倉庫維護您的jar文件。

可以定義在POM:

  • 公共依賴
  • 三個輪廓(DEV,測試,PROD),與相應的依賴關係的每個配置文件。

對於你的構建,你只需要調用:

mvn -P dev/test/prod clean package 

它將創建你一個正確的WEB-INF/lib下的戰爭(公共依賴+輪廓特定的依賴)。

1

您不應該爲不同的環境構建不同的JAR。

相反,區分不同環境(例如數據庫連接憑證等)所需的配置應該外部化。 JNDI對此非常理想,但可以使用系統屬性或外部屬性文件等。但是,如果你確實真的必須爲你的開發人員,測試人員(嗯,你有多自信,他們看着你的開發人員是同樣的東西?),最後是生產(不同的是再次不同測試者看到了什麼),然後@Benoit Courtine提出了一個好方法。

0

它確實取決於你使用的是什麼構建系統,以「正確」的答案。除非破壞,否則改變你的構建系統是沒有意義的。如果您正在使用基於Eclipse PDE構建的東西,以下是處理這種情況的好方法。

爲4個罐子中的每一個創建一個項目。該項目將簡單地在lib路徑上包含jar並導出它包含的軟件包。依靠普通罐子的3個罐子也可以添加包裝進口。然後,您可以使用.product文件爲使用.product導出功能的每個配置構建軟件。

0

必須同意@Gary Rowe,並且我會補充說,多個jar似乎有點愚蠢,因爲訪問我認爲是三個不同環境中的相同web服務。唯一不同的是WSDL。

這可以通過運行時VM參數這樣簡單的事情來完成,該參數指示要使用哪一個,然後將所有三個包含在同一個jar中。我們在定義了-Druntime.env(tst,dev,int,prod或local)的情況下執行類似的操作,然後允許在運行時加載相應的配置。

作爲一個方面 - 在我們的例子中,我們只是使用WSDL並使用maven生成java代碼,作爲使用Apache CXF構建過程的一部分。根本不需要任何實際的jar文件。