1

私は単純なMavenプロジェクトを手に入れましたが、それを正しくするのに何時間もイライラして失敗しました。このプロジェクトには、1 つの親モジュールと 2 つのサブモジュール (1 つは ear-packaging 用、もう 1 つは 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 が必要でした。javaee-apiこれらの他の 3 つのライブラリは、注釈の依存関係を必要とする ejb-module から取得されます。残念ながら、推移的な javax.mail.jar、activation.jar も収集します。

なぜ構造が期待どおりに機能しないのか、今では本当にわかりません。どうしても、このガイドをステップバイステップで実行しようとしました。

4

1 に答える 1

1

わかりました、さまざまなMavenアーキタイプからプロジェクトをチェックアウトした後、エラーを見つけました...最小エラー...それは常に膨大な時間を費やす最小エラーです...

ejb を依存関係として定義する ear ファイルの依存関係セクションに、次のように追加します。

<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 に答える