2010-05-18 38 views
1

我想從頭開始使用m2eclipse插件創建一個eclipse項目來幫助解決依賴關係。Eclipse + m2eclipse插件+ EAR模塊依賴關係

該項目包括以下模塊:

測試耳 測試EJB 測試戰

耳朵同時引用其他項目,及POM文件已經準備就緒,在每個項目的工作。

不過我有一個情況:

而不是僅僅的Maven構建我的項目,我希望能夠將耳朵從Eclipse導出,並有一個工作項目,所以我可以把它的熱部署一臺服務器。

但我有一個問題... ejb使用外部jar(jbpm),在pom中正確指定了依賴關係,它出現在「Maven Dependencies」用戶庫定義中,而且我沒有編譯錯誤。

但是爲了成功導出EAR,我必須將jar(jbpm)添加到ejb清單文件中。轉到項目屬性「Java EE Module Dependencies」我只有條目「Maven Dependencies」lib,選擇它不會將任何信息添加到清單文件中。

之後,導出EAR將顯示EAR根中的依賴jar文件,但打開包含的EJB會顯示該清單根本沒有類路徑條目。

如果部署EAR,則在EJB中的ClassNotFoundException上的信息失敗,該信息位於依賴關係jar中的類中。

爲了避免這種情況,我可以將jar包括到EAR模塊(project-> properties-> Java EE Module Dependencies)中,然後我可以將它添加到EJB中,並且相應地更新清單文件。

但是該項目將會有大量的罐子,我不想將它們全部手工包含在EAR中,然後在每個項目中選擇它們。

我知道那些條目在.settings/org.eclipse.wst.common.component文件中,但不應該maven插件在EAR項目中自動更新它?至少在Java EE的模塊依賴關係,所以我可以檢查每個子項目的罐子(EJB,戰爭,...)

感謝

回答

0

如果我理解正確,你要打包所有3這些庫在您的EJB中用於生成的EAR文件中。如果您的EAR項目的包裝類型爲ear並且您的EJB模塊的依賴關係已正確指定,並且類型爲ejb那些第三方庫應該自動包含在生成的EAR文件中。您也可以在EAR中指定一個自定義lib目錄。

例子:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>yourGroup</groupId> 
    <artifactId>test-ear</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <!-- We want the resulting artifact to be an .ear file --> 
    <packaging>ear</packaging> 

    <dependencies> 
     <!-- Internal dependencies --> 
     <dependency> 
      <groupId>yourGrup</groupId> 
      <artifactId>test-ejb</artifactId> 
      <version>1.0.0-SNAPSHOT</version> 
      <!-- We have an ejb dependency here - take care of it! --> 
      <type>ejb</type> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-ear-plugin</artifactId> 
       <configuration> 
        <version>5</version> 
        <!-- put all 3rd party libs into the lib directory --> 
        <defaultLibBundleDir>lib</defaultLibBundleDir> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

所以這不應該有什麼M2E IMO。您可能必須在Eclipse中更新項目配置。