3

例をできるだけ単純にするために、古典的なJavaEE5アプリケーションがあるとしましょう。EARモジュールで使用し、を
使用するとします。 また、WARモジュールで使用しており、使用しています。EARはWARで提供されるように設定されます。x-libx-libcommons-io
y-liby-libcommons-io

私が得る結果は次のとおりです。

- app.ear
    /lib
       x-lib.jar
       commons-io.jar
    /app.war
       /WEB-INF
          /lib
             y-lib.jar
             commons-io.jar

app.war/WEB-INF/libcommons-ioがすでにパッケージ化されている場合は、パッケージ化されたくありませんapp.ear/lib

私の戦争のpom.xmlには、次のものがあります。

<dependency>
   <groupId>my.group</groupId>
   <artifactId>app</artifactId>
   <type>ejb</artifact>
   <scope>provided</scope>  
   <version>${project.version}</version>
</dependency>

<dependency>
   <groupId>some.other.group</groupId>
   <artifactId>y-lib</artifactId> <!-- This loads commons-io as compile dependency -->
   <version>1.2.3</version>
</dependency>

アプリのejb依存関係とともに提供されるすべてのものを、WARに含まず、提供されるように設定する必要があることをMavenに伝える方法はありますか?

重複したJARをすべて追跡して、提供されたものとして設定したり、1つずつ明示的に除外したりしたくありません。

編集

私はスキニー戦争の解決策を知っています。ただし、WARとEARで依存関係を複製するというdrwabackは好きではありません。多分あなたはこれを克服する方法を知っています。

4

4 に答える 4

0

次のような除外を追加する必要があります。

<dependency>
   <groupId>some.other.group</groupId>
   <artifactId>y-lib</artifactId>
   <version>1.2.3</version>
   <exclusions>
      <exclusion>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
      </exclusion>
   </exclusions>
</dependency>
于 2012-11-29T09:21:14.253 に答える
0

アプリのejb依存関係とともに提供されるすべてのものを提供され、WARに含まれないように設定する必要があることをMavenに伝える方法はありますか?

この場合、今のところ最善の選択肢は、依存関係の除外でワイルドカードを使用することです。Maven 3 でのみサポートされています。

以下は、war プロジェクトから ejbmodule 依存関係を宣言する方法の例です。

    <dependency>
        <groupId>ejbModuleGroupId</groupId>
        <artifactId>ejbModuleArtifactId</artifactId>
        <scope>provided</scope>
        <type>ejb</type>
        <exclusions>
          <exclusion>
            <groupId>*</groupId>
            <artifactId>*</artifactId>                
          </exclusion>
        </exclusions>
    </dependency>

ejb-client への依存関係を宣言するときに、これと同じ戦略を使用できます。

Maven 3 のバージョンによっては、厄介な警告が表示されますが、新しいバージョンでは問題ないはずです。

于 2014-08-20T14:38:46.370 に答える
0

EJB モジュールを提供された依存関係として war モジュールに追加し、その EJB のすべての依存関係が推移的に来るようにする場合、これは自動的に行う必要があります。したがって、重複する依存関係を war pom に追加しないでください。Maven に処理させてください。

于 2012-11-29T09:53:30.620 に答える