問題タブ [transitive-dependency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 必要な競合する Java 依存関係を管理する方法
私のJavaプロジェクトで使用する必要がある(必須)fizz-1.0.jar
としましょう。buzz-2.3.2.jar
今、 にfizz-1.0.jar
依存しfoo-0.1.35.jar
、 にbuzz-2.3.2.jar
依存しfoo-4.2.17.jar
ます。
foo-0.1.35.jar
Widget
次のようなクラスが含まれています。
foo-4.2.17.jar
の大幅に変更されたバージョンが含まれていますWidget
:
残念ながら、fizz-1.0.jar
との両方buzz-2.3.2.jar
が の両方のバージョンを多用していますWidget
。
の両方のバージョンを盲目的にfoo-x.y.z.jar
クラスパスに追加することはできません。Widget
最初にロードされた方が または のいずれかでしか機能しないためfizz-1.0.jar
ですbuzz-2.3.2.jar
。
ここでのオプションは何ですか? との両方が必要であり、推移的な依存関係をすべて満たさなければならないことを忘れないでください。fizz-1.0.jar
buzz-2.3.2.jar
java - Maven 依存関係階層 - 含めるか含めないか
サブモジュールを含むプロジェクトがあります。
ProjA は、ProjX に依存する ProjY に依存しています。
ProjA で ProjY の依存関係を指定しています。ProjX の依存関係を ProjA に個別に含める必要がありますか? (推移的な依存関係?)
また、ProjB が ProjX に依存している場合はどうなるでしょうか? それは別に入れるべきですか?または、それを Porj (メイン) レベルに含めることができますか?
java - Maven の除外が機能しない
私は、の依存関係と、の依存関係をJUnit 4.11
持つ推移的な依存関係を持つプロジェクトに取り組んでJMock 2.6.0-RC2
いJUnit-dep 4.4
ます。のこの推移的な依存関係はJUnit-dep
、ローカルの pom for の設定をオーバーライドしていますJUnit
。オーバーライドするとは、JUnit メソッドを呼び出すときに、v4.11 ではなく v4.4 のメソッドを呼び出すことを意味します。JMock
forおよび for の除外を追加しJUnit-dep
ても、解決された依存関係には影響しませんでした。
注: JUnit
とJUnit-dep
は別個artifactId
の であるため、一方を使用しても他方が省略されることはありません。
前の質問: JUnit アノテーションが機能しない
JUnit のルールを使用してテストを実行しようとしていますが、テストを実行するExpectedException
と、ルールが実行されていないように見えます。以下のコードでは、ルールが存在しない場合に予想されるように、例外はそのまま通過し、テストに失敗します。
最近、プロジェクトの Maven 依存関係を 4.3.1 から 4.11 に変更しました。ワークスペースのクリーンビルドも行いました。この問題を解決するには、どのような手順を検討する必要がありますか? Maven からの推移的な依存関係はランナーを混乱させますか? どうすれば 4.11 で実行していることを確認できますか?
編集:
それが役立つかどうかはわかりませんが@RunWith(BlockJUnit4ClassRunner.class)
、クラスのトップに追加すると、次のことがわかりました。
編集:
Eclipse で m2e を介して依存関係を調べる: pom の [依存関係階層] タブを確認すると、左側に 1 つの解決済み依存関係(JUnit: 4.11) と複数 (4.11 との競合のため省略) のバージョンが表示されます。さらに、junit-dep 4.4の解決済み依存関係jmock-junit4: 2.6.0-RC2
がありますが、この依存関係を除外 ( Right-click + Exclude Maven Artifact...
) としてマークしました。さらに、JMock 自体は、私自身の への呼び出しと競合するため、省略されているとマークされていますJMock 2.1.0
。
編集:
Ctrl+Shift+T RunWith
除外にもかかわらず、4.4 と 4.11 の 2 つのバージョンが表示されます。
編集:問題
を「修正」した依存関係を追加しjunit-dep 4.10
、最終的に4.4バージョンの作成に関する問題を省略しました。しかし、これは解決策というよりハックのようです。
gradle - Gradle のすべての依存関係から特定の推移的な依存関係を無視する方法
Gradleで特定の推移的な依存関係を無視するにはどうすればよいですか?
たとえば、多くのライブラリ (Spring など) は に依存しており、(およびその jcl-over-slf4j ブリッジ)commons-logging
に置き換えたいと考えています。commons-logging
SLF4J
私のgradleスクリプトで、依存する依存関係ごとではなく、一度言及する方法はありますcommons-logging
か?
すべての依存関係を反復しexclude
、それらすべてにいくつかを追加するスクリプトを考えていましたが、より良い解決策はありますか? そして、そのスクリプトはどのようになりますか?