web-dev-qa-db-ja.com

Mavenスコープはivyによってivy構成にどのようにマッピングされますか

Mavenリポジトリ のようなMavenリポジトリは、依存関係管理のための最も幅広いプロジェクトを提供します。

Ivyは、Mavenリポジトリにアクセスし、そこからアーティファクトをダウンロードする可能性を提供します。これらのリポジトリにはpomファイルのみがあり、ivy.xmlはありません。

それらは m2互換モードで実行されるivyリゾルバー で取得できます。

<ibiblio name="maven2" m2compatible="true"/>

特にこのユースケースについて私が知りたいのは:

  • デフォルトで使用可能なスコープと、それらが提供するアーティファクト
  • Mavenスコープはどのようにivyconf/configurationにマップされますか?
28
oers

次の2つの記事は、MavenとIvyがどのように相互運用するかをよりよく理解するのに役立ちました。

奇妙なことに、Mavenスコープをシミュレートするためにどのように使用できるかが説明されるまで、私はツタの構成を本当に理解していませんでした。

次のリストは www.symphonious.net link からのものであり、pom-files/mavenリポジトリから利用可能な構成を示しています。

  • defaultランタイム依存関係とマスターアーティファクトをこのconfで使用できます
  • masterには、このモジュール自体によって公開されたアーティファクトのみが含まれ、推移的な依存関係はありません
  • compileこれはデフォルトのスコープであり、何も指定されていない場合に使用されます。コンパイルの依存関係はすべてのクラスパスで利用できます
  • providedこれはコンパイルによく似ていますが、JDKまたはコンテナーがそれを提供することを期待していることを示します。コンパイルクラスパスでのみ使用可能であり、推移的ではありません
  • runtimeこのスコープは、依存関係がコンパイルには必要ないが、実行には必要であることを示します。ランタイムクラスパスとテストクラスパスにありますが、コンパイルクラスパスにはありません
  • testこのスコープは、依存関係がアプリケーションの通常の使用に必要ではなく、テストのコンパイルフェーズと実行フェーズでのみ使用できることを示します。
  • systemこのスコープは、それを明示的に含むJARを提供する必要があることを除いて、提供されたものと同様です。
  • sourcesこの構成には、プロジェクトのソースがある場合、このモジュールのソースアーティファクトが含まれます
  • javadocこの構成には、プロジェクトのJavaDocがある場合、このモジュールのjavadocアーティファクトが含まれます
  • optionalには、すべてのオプションの依存関係が含まれています
56
Mark O'Connor