2013-07-20 33 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>