[解決済み] 親POMから継承された成果物を除外する方法はありますか?
質問
依存関係からのアーティファクトは
<exclusions>
要素の中で
<dependency>
しかし、この場合は親プロジェクトから継承した成果物を除外する必要があります。以下に、議論中のPOMの抜粋を示します。
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>jruby</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<artifactId>base</artifactId>
<groupId>es.uniovi.innova</groupId>
<version>1.0.0</version>
</parent>
<dependencies>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>ALL-DEPS</artifactId>
<version>1.0</version>
<scope>provided</scope>
<type>pom</type>
</dependency>
</dependencies>
</project>
base
アーティファクトは
javax.mail:mail-1.4.jar
であり、かつ
ALL-DEPS
は同じライブラリの別のバージョンに依存しています。という事実のために
mail.jar
から
ALL-DEPS
は実行環境上に存在し、エクスポートはされませんが、衝突して
mail.jar
としてスコープされている親に存在する
compile
.
解決策は、親POMからmail.jarを取り除くことかもしれませんが、ベースを継承するプロジェクトのほとんどは、それを必要とします(log4jのための横断的な依存関係であるため)。そこで、私がやりたいことは、単純に
子プロジェクトから親のライブラリを除外する
というものです。
base
が依存関係であり、親の pom でない場合にできるように、子プロジェクトから親のライブラリを除外します。
...
<dependency>
<artifactId>base</artifactId>
<groupId>es.uniovi.innova</groupId>
<version>1.0.0</version>
<type>pom<type>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
</exclusions>
</dependency>
...
どのように解決するのですか?
いくつかのアイデアがあります。
-
その場合、単純に親を継承しないようにすればいいかもしれません(そして、依存関係を宣言して
base
への依存を除外して宣言します)。親Pomに多くのものがある場合は便利ではありません。 -
もう一つテストすべきは
mail
で必要とされるバージョンでアーティファクトを宣言します。ALL-DEPS
の下にあるdependencyManagement
の下にあるを使って強制的に収束させます (これでスコープ問題が解決するかどうかは分かりませんが)。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>???</version><!-- put the "right" version here -->
</dependency>
</dependencies>
</dependencyManagement>
-
を除外することもできます。
mail
依存を除外することもできます。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
</dependency>
- あるいは、異端の1.2.15バージョンではなく、log4jの1.2.14バージョンに戻すこともできます(なぜ彼らは上記の依存関係に印をつけなかったのでしょうか? オプション ?!).
関連
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
IllegalArgumentException この例外を解決する方法
-
ファインバグタイプ
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
[解決済み】Maven モジュール + 特定の単一モジュールのビルド
-
[解決済み] Maven: ライブラリによって追加された依存関係をオーバーライドする方法
-
[解決済み】Spring Boot - すでに親POMがある場合の親Pom
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
プロジェクトの依存関係を解決できなかった 解決
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
ローカルリソースのロードが許可されていない場合の解決策