2

Web サービス用の Maven POM ファイルがあります。依存関係の 1 つとして、Web アプリケーション サーバーの上位レベルに既に保持されている jar ファイルに対していくつかの除外を指定する必要があります (この特定の Web アプリケーションだけでなく、すべての Web アプリケーションからアクセス可能です)。そのような除外の一例は、私の JDBC ドライバーを含む JAR です。

例 (架空の詳細):

<dependency>
    <groupId>mygroup</groupId>
     <artifactId>myartifact</artifactId>
     <version>1.0.0</version>
     <exclusions>
         <!--The jdbc driver causes hot-deployment issues-->
         <exclusion>
             <groupId>db.drivers</groupId>
             <artifactId>jdbc</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

私が直面している問題は、テストに JDBC ドライバーが必要なことです。JDBC ドライバーを読み込めないため、私のテストは現在失敗しています。

除外されたパーツがテストでアクセスできるように POM を構成するにはどうすればよいですか? ただし、WAR ファイルには含まれません。

更新: mygroup.myartifact の POM を変更することはできません。これは、他の多くのプロジェクトに依存しているためです。この除外要件は私のプロジェクトに固有のものです。

更新 2:この質問の言い回しがうまくいかなかったようです。以下の Lars のソリューションは、(例が示すように) 1 つの除外に最適ですが、実際のシナリオでは複数の除外があり、それぞれに追加の依存関係を追加するのは面倒です。うまくいくと思われる解決策は、表示された依存関係のスコープをコンパイルに設定し、次に同じアーティファクト (mygroup.myartifact) の 2 つ目の依存関係を除外せずに作成し、スコープをtestに設定することです。Lars は私の表現が下手な質問に正しく答えただけでなく、実際の解決策の方向に導いてくれたので、彼の返事を答えとしてマークします。

4

1 に答える 1

7

依存関係内で「scope」タグを使用します。

<scope>test</scope>

http://maven.apache.org/pom.html#Dependencies

編集:構成を正しく理解している場合は、追加する必要のあるscope=testをmygroup.myartifactPOMに追加する必要があります。そうすれば、jdbc jarを含めてそのアーティファクトをテストできますが、他のPOMSがmygroup.myartifactを含めたい場合は常に、推移的な依存関係としてjdbcが含まれることはありません。

2番目の編集:わかりました。含めるPOMを制御しない場合は、すでに行ったように除外を実行してから、scope=testを使用してjdbcを新しい依存関係として追加します。

于 2008-09-25T11:08:48.503 に答える