maven pom.xmlファイルのtype、typeはどう使いますか?

2523 ワード

大男ブログから転載しましたが、以下はコピーしたもので、そっくりです.MavenのScope区別ノート

依存Scope

scopeは、プロジェクトの使用段階におけるクラスパッケージを定義する.プロジェクトフェーズには、コンパイル、実行、テスト、パブリッシュが含まれます.
分類説明compileデフォルトscopeはcompileであり、現在の依存参加プロジェクトのコンパイル、テスト、および実行フェーズとして表され、強い依存に属します.梱包する時、かばんの中に着きます.test依存性は、試験例のコンパイルおよび実行、例えば、定性的Junitを含む試験に関連するコンテンツのみに関与する.runtimeは、実行期間の使用のみに依存する.一般的にこのクラスライブラリは、JDBCクラスライブラリのようなインタフェースと実装が分離されたクラスライブラリであり、コンパイル時には関連するインタフェースにのみ依存し、具体的な実行時には、具体的なmysql、oracleなどのデータのドライバが必要である.このようなドライバはruntimeのクラスライブラリです.providedこの依存は、パッケージ化中に入力する必要はありません.これは、tomcatやベースクラスライブラリなどの実行環境によって提供されます.実際には、コンパイル、テスト、実行などのサイクルに参加することができます.compileと同等です.違いは、パッケージフェーズでexclude操作が行われたことです.systemは、mavenウェアハウスから抽出されるのではなく、systemPathのプロパティを参照して抽出されるローカルファイルシステムから抽出されるprovidedと同様に使用される.importこれはmaven 2です.0.9以降のプロパティでは、importはdependencyManagementでのみ使用でき、maven単一継承の問題を解決できます.import依存関係は実際には依存関係の伝達性を制限することには関与しません.

systemPath


mavenがrepositoryのjarパケットではなくローカルに依存する場合、sytemPathはローカルjarパケットのパスを示します.たとえば、次のようにします.

  org.hamcrest
  hamcrest-core
  1.5
  system
  ${basedir}/WebContent/WEB-INF/lib/hamcrest-core-1.3.jar


dependencyのtype


依存を導入する場合は、dependencyリファレンスとdependencyManagementセクションを一致させるための最小情報セットが実際に{groupId,artifactId,type,classifier}であるため、typeを指定する必要があります.多くの場合、これらの依存関係はclassifierのないjar依存を参照します.これにより、typeのデフォルト値がjarであり、デフォルトclassifierがnullであるため、識別を{groupId,artifactId}に設定できます.typeの値は一般的にjar,war,pomなどがあり,導入の依存を宣言するタイプである.

dependencyのclassifier


Classifierは最も無視されやすいMaven特性かもしれませんが、非常に重要であり、座標の計画を支援する必要があります.
このような状況を想定すると、jarプロジェクトがあり、dog-cli-1.0と言います.JArバーを実行すると、ユーザーはコマンドラインに子犬を描くことができます.
現在、ユーザーの要求はzipパッケージを提供することです.この実行可能なjarだけでなく、ソースコードとドキュメントも含まれています.言い換えれば、これは比較的正式な配布パッケージです.このファイル名はどうなりますか?dog-cli-1.0.zip?拡張子だけでは、Mavenがデフォルトで生成したコンポーネントと、追加の構成で生成された配布パッケージとを区別するのは難しい.dog-cli-1.0-dist.zipなら最高です.ここでdistはclassifierであり、デフォルトのMavenは1つのコンポーネントしか生成されません.私たちはメインコンポーネントと呼ばれています.それは、Mavenが他の付属コンポーネントを生成することを望んでいるときにclassifierを使用することができます.一般的なclassifierにはdog-cli-1.0-sourcesもあります.JArはソースパッケージを表し、dog-cli-1.0-javadoc.jarはJavaDocパッケージなどを表します.
classifierは、同じバージョンで異なる環境またはjdkに対して使用されるjarを表します.この要素が構成されている場合、この要素名を最後に追加して、対応するjarを検索します.たとえば、次のようにします.
jdk17
jdk18