問題タブ [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.

0 投票する
1 に答える
73 参照

java - Gradle: プロジェクト ソースで推移的な依存関係を使用できないようにする

Java 8 を使用するプロジェクトjoda-timeでは、プロジェクト依存関係の推移的な依存関係です。プロジェクト ソースでのjava time代わりにの使用を強制したい。クラスをgradleプロジェクトのプロジェクトソースで使用するように制限するにjoda-timeはどうすればよいですか?joda-time

0 投票する
0 に答える
65 参照

maven - Maven を 2.2.1 から 3.2.5 にアップグレードした後の推移的な依存関係の違い

会社のインフラストラクチャが変更されたため、Maven 2.2.1 から Maven 3.0.5 へのアップグレードが必要になりました

私のプロジェクトの構造は、いくつかのモジュールを含む 1 つの EAR です。EAR の依存関係はlib、クラスパス上にあるそのフォルダーに格納され、すべてのモジュールがそれを使用できます。複数のモジュールで使用される依存関係がある場合、スコープ内compileおよびprovidedそれを必要とするモジュールのスコープ内で EAR の依存関係として追加されます。このようにして、ファイルは二重になりません。

アップグレード後、スコープprovidedのある依存関係は別の方法で処理されます。それらの推移的な依存関係は、モジュールの lib フォルダーに追加されます。これにより、競合が発生します。

いくつかの調査の結果、提案された解決策を見つけました - maven-dependency-plugin を<excludeScope>provided</excludeScope>during<goal>copy-dependencies</goal>に設定しますが、何も変わりません -libとにかく一時的な依存関係がモジュールのフォルダに追加されます。

問題を間違って理解していますか?これを引き起こすmaven 2と3の間で何が変わったのですか?

よろしく、 ヤン

面倒なモジュールのプラグイン構成:

0 投票する
0 に答える
274 参照

gradle - Can Gradle read transitive dependencies from pom.xml contained in local JAR files?

Unlike external dependencies (from Maven, Ivy, etc.) local JAR files usually do not provide a list of transitive dependencies for Gradle. Unless they theoretically do in form of files pom.xml and pom.properties in directory META-INF/maven/<groupId>/<artifactId>. As far as I understand these are the same files Maven uses to provide transitive dependencies for an artifact.

So I wonder if Gradle is somehow able to read these transitive dependencies from a local JAR file as if the local JAR was an external dependency. Only adding the local JAR as dependency seems to ignore the embedded pom.xml.

Use case: I am writing an Plugin API JAR for an internal product which should be used by our developers to develop plugins. The API JAR has some external dependencies (Hibernate Annotations in domain classes, dom4j, stuff like that) and it would be great if the developer wouldn't have to define these dependencies by himself (they could change with newer API version). I also don't want to create a fat JAR containing all dependencies because a) the size! and b) it would not contain the sources of the external dependencies.

0 投票する
4 に答える
1895 参照

java - Gradle はどうにかして瓶地獄を解決するのに役立ちますか?

Java 8 はこちら。

次のように定義されたクラスを持つ、widgetMaven 座標を持つライブラリの古いバージョンがあるとします。widgetmakers:widget:1.0.4

年が経ちます。このwidgetライブラリの管理者は、 aWidgetは決してmeowではなく、実際には であるべきであると判断していbarkます。そのため、Maven 座標widgetmakers:widget:2.0.0を使用しWidgetて次のような新しいリリースが作成されます。

それでは、アプリをビルドしmyappます。そして、すべての依存関係の最新の安定したバージョンを使用したいので、依存関係を次のように宣言します (内build.gradle):

ここで、この (架空の)fizzbuzzライブラリが常にwidgetライブラリの 1.x バージョンに依存しているとしWidgetましょうmeow

widgetそのため、コンパイル クラスパスで の 2 つのバージョンを指定しています。

  1. widgetmakers:widget:1.0.4これは、fizzbuzzライブラリの依存関係としてライブラリによって取り込まれます。と
  2. widgetmakers:widget:2.0.0私が直接参照している

Widgetしたがって、明らかに、最初にクラスロードされる のバージョンに応じて、Widget#meowまたは のいずれかになりますWidget#bark

Gradle は、ここで私を支援するための機能を提供していますか? 同じクラスの複数のバージョンを取り込みfizzbuzz、古いバージョンの を使用するようにクラスを構成Widgetし、新しいバージョンを使用するように私のクラスを構成する方法はありますか? そうでない場合、私が考えることができる唯一の解決策は次のとおりです。

  1. ある種のシェーディングおよび/またはファットジャーベースのソリューションを達成できるかもしれません。おそらく、すべての依存関係をパッケージとして取り込み、myapp/bin異なるバージョンプレフィックスを付けます。確かに、ここで明確な解決策はわかりませんが、何かが実現可能であると確信しています(ただし、完全にハック/厄介です)。または...
  2. 依存関係グラフ全体を注意深く調べて、すべての推移的な依存関係が互いに競合していないことを確認してください。この場合、これはfizzbuzzメンテナーにプルリクエストを送信して最新widgetバージョンにアップグレードするか、残念ながらダウングレードmyappして古いwidgetバージョンを使用することを意味します。

しかし、Gradle (これまでのところ) は私にとって魔法のようなものでした。だから私は尋ねます:ここで私を利用できるGradleマジックはありますか?

0 投票する
2 に答える
514 参照

android - バック: 推移的な依存関係

メイン プロジェクト A (APK) は、サブ プロジェクト B (AAR) に依存します。A と B の両方が C (AAR) に依存しています。問題は C が 2 回含まれていることです。

"values.xml:XXX: エラー: 属性 "YYY" は既に定義されています"

最終的な APK から一時的な依存関係 C を除外するにはどうすればよいですか?

プロジェクト A:

サブプロジェクトB

Cは「appcompat-v7.aar」です。
注: A は「A/libs」に C を含み、B は「B/libs」に C を含みます。