我們在那裏我們的UI項目使用EJB客戶的依賴,包括相當多的一羣業務服務的解決方案。 Maven的問題在於,即使客戶端.jar通常包含大約1-2個類,它們也會帶來整個服務應用程序的完整依賴堆棧。這可以得到一個有點難看,當的.ear文件開始成長到50-100Mb彈出和有不時感謝討厭的錯誤無關的依賴偷偷自己的方式進入用戶界面應用程序。Maven的EJB客戶端生成依賴排除
當然,我們總是可以排除在客戶端的依賴關係,但後來我們都寫同樣的一堆使用這些服務線,以每個客戶的項目,這是一個很多不必要的重複。另外,人們會提出最奇怪的錯誤消息,並使用大量的時間來追蹤它們,然後記住提及它們包含了一些客戶端jar,而沒有檢查它帶入方程中的附加依賴關係。
例子:這只是一個服務客戶端被列入
<dependency>
<groupId>fi.path.to.service</groupId>
<artifactId>customermanagement-common</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>fi.path.to.service</groupId>
<artifactId>customermanagement-service</artifactId>
<classifier>client</classifier>
<exclusions>
<exclusion>
<groupId>fi.path.to.dependency</groupId>
<artifactId>internal-dependency-#1</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.castor</groupId>
<artifactId>castor</artifactId>
</exclusion>
<exclusion>
<groupId>fi.path.to.dependency</groupId>
<artifactId>internal-dependency-#2</artifactId>
</exclusion>
<exclusion>
<artifactId>internal-dependency-#3</artifactId>
<groupId>fi.path.to.dependency</groupId>
</exclusion>
<exclusion>
<artifactId>internal-dependency-#4</artifactId>
<groupId>fi.path.to.dependency</groupId>
</exclusion>
<exclusion>
<artifactId>internal-dependency-#5</artifactId>
<groupId>fi.path.to.dependency</groupId>
</exclusion>
<exclusion>
<artifactId>castor-xml</artifactId>
<groupId>org.codehaus.castor</groupId>
</exclusion>
<exclusion>
<artifactId>castor-codegen</artifactId>
<groupId>org.codehaus.castor</groupId>
</exclusion>
<exclusion>
<artifactId>castor-xml-schema</artifactId>
<groupId>org.codehaus.castor</groupId>
</exclusion>
<exclusion>
<artifactId>internal-dependency-#6</artifactId>
<groupId>fi.path.to.dependency</groupId>
</exclusion>
</exclusions>
<version>2.6</version>
</dependency>
,試想有幾個不同的應用程序這幾條,你得到的圖片,編寫了所有的不包括每次都是很煩人和項目POM開始變得相當長。
我將標誌着作爲依賴提供,但也有不崩潰上運行時,如果它們不存在一對夫婦的依賴。說包含另一個服務調用的另一個應用程序與另一個外部的Exception類,這不是由於某種原因或另一個包裝在服務項目中的原因,如果不存在,將在運行時導致ClassNotFoundException。
因此,我知道可以通過在maven-ejb-plugin上使用pom.xml規範來從ejb客戶端生成期間排除/包含類,但是有什麼方法可以排除依賴關係嗎?
面對類似的問題,開始改變項目是如何通過CI解決方案內置很可能將是一個大麻煩,成爲維修的問題,當他們從公司中所有其他應用程序具有不同的功能。 – t0mppa 2013-05-24 07:09:16