1

我有一个简单的 maven 项目,但令人沮丧地失败了几个小时才能把它做好。该项目包含 1 个父模块和 2 个子模块(一个用于 ear-packaging,另一个用于 ejb)。构建成功,但耳塞只是没有按预期工作:

<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 模块,它需要javaee-api注释的依赖项。不幸的是,它还收集了传递 javax.mail.jar、activation.jar。

现在我真的不知道为什么这个结构不能按预期工作,无论如何我试图一步一步地遵循这个指南

4

1 回答 1

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>
于 2013-07-20T14:25:59.940 回答