2013-07-20 111 views
1

我得到了一個簡單的maven項目,但幾個小時卻失敗地讓它失敗。該項目包含1個父模塊和2個子模塊(一個用於耳朵包裝,另一個用於ejb)。建築工程成功,但耳朵包裝只是不能按預期工作:使用Maven無法正確地獲取EAR包結構

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>at.betrieb.projekt</groupId> 
     <artifactId>extended</artifactId> 
     <version>1.0</version> 
    </parent> 
    <artifactId>extended-ear</artifactId> 
    <packaging>ear</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>at.betrieb.projekt</groupId> 
      <artifactId>extended-ejb</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>2.7</version> 
       <configuration> 
        <version>6</version> 
        <generateApplicationXml>false</generateApplicationXml> 
        <defaultLibBundleDir>lib</defaultLibBundleDir> 
        <jarModule> 
         <groupId>at.betrieb.projekt</groupId> 
         <artifactId>extended-ejb</artifactId> 
         <bundleDir>/</bundleDir> 
        </jarModule> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

現在,當我看着打包文件夾我看到這個結構:

|-lib 
    extended-ejb-1.0.jar 
    activation-1.1.jar 
    javaee-api-7.0.jar 
    javax.mail-1.5.0.jar 
|-META-INF 
    application.xml 

我預計然而什麼是這個結構:

|-extended-ejb-1.0.jar 
|-lib 
    activation-1.1.jar 
    javaee-api-7.0.jar 
    javax.mail-1.5.0.jar 
|-META-INF 
    application.xml 

所以基本上我想ejb以外的其他庫。這些其他3個庫來自ejb-module,它需要javaee-api依賴關係進行註釋。不幸的是,它也收集了可傳遞的javax.mail.jar,activation.jar。

現在我真的不知道爲什麼結構不能按預期的方式工作,無論如何我試圖按照this guide step by step

回答

1

好吧,以後我檢查了各種Maven原型,我發現了錯誤...最小誤差的一個項目......它總是最小誤差花費大量的時間...

相關內容部分EAR文件,在那裏我定義我的EJB作爲依賴的,只是補充一點:

<type>ejb</type> 

所以它是:

<dependency> 
    <groupId>at.betrieb.projekt</groupId> 
    <artifactId>extended-ejb</artifactId> 
    <version>1.0</version> 
    <type>ejb</type> 
</dependency> 

此後,它工作正常。顯然,在IBM頁面和許多其他頁面上都是錯誤的。另外我發現以下部分也過時了,完全可以從耳掛部分刪除

<jarModule> 
    <groupId>at.betrieb.projekt</groupId> 
    <artifactId>extended-ejb</artifactId> 
    <bundleDir>/</bundleDir> 
</jarModule>