1. ホーム
  2. メイヴン

[解決済み】pom.xmlの<dependency>の下にある<scope>は何のためにあるのですか?

2022-04-07 03:04:51

質問

ドキュメントを見る http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html を見ることができます。 <scope> タグの下に <dependency>

これは何ですか?また、どのようにテストの実行に使用できますか?

どのように解決するのですか?

その <scope> 要素は6つの値を取ることができます。 コンパイル , 提供 , ランタイム , テスト , システム インポート .

このスコープは、依存関係の推移を制限するために使用され、また、様々なビルドタスクに使用されるクラスパスに影響を与えるために使用されます。

<ブロッククオート

コンパイル

これはデフォルトのスコープで、何も指定されていない場合に使用されます。コンパイルの依存関係は、プロジェクトのすべてのクラスパスで利用可能です。さらに、それらの依存関係は依存するプロジェクトに伝搬されます。

提供

これはcompileとよく似ていますが、JDKやコンテナが実行時に依存関係を提供することを期待していることを示します。たとえば、Java Enterprise Edition 用の Web アプリケーションを構築する場合、Web コンテナがこれらのクラスを提供するため、Servlet API および関連する Java EE API の依存関係を scope provided に設定することになります。このスコープは、コンパイルおよびテストのクラスパスでのみ利用可能であり、遷移的ではありません。

ランタイム

このスコープは、その依存関係がコンパイルには必要ないが、実行には必要であることを表しています。実行時クラスパスとテストクラスパスにありますが、コンパイルクラスパスにはありません。

テスト

このスコープは、その依存関係がアプリケーションの通常の使用には必要なく、 テストのコンパイルと実行の段階でのみ利用可能であることを表します。

システム

このスコープは、それを含むJARを明示的に提供しなければならないことを除けば、providedと似ています。アーティファクトは常に利用可能であり、リポジトリで検索されることはありません。

インポート (Maven 2.0.9 以降で利用可能)

このスコープは、セクション内の pom タイプの依存関係においてのみ使用されます。これは、指定された POM を、その POM のセクションの依存関係に置き換えることを示します。置き換えられるので、import のスコープを持つ依存関係は、実際には依存関係の推移を制限することに関与しません。

質問の後半にお答えします。

テストの実行にはどのように使用するのですか?

なお test スコープを使用すると、テストフェーズでのみ依存関係を使用することができます。

を読み取る。 ドキュメント をご覧ください。