Mavenの依存範囲=コンパイルおよび依存性の差を提供

問題を再現するために、

前回ここで友人はつまり、彼らはのpom.xml依存性であり、私に質問をし、我々は次のような、提供されるいくつかの例があります参照してください。

<dependency> 
   <groupId>com.liferay.portal</groupId> <artifactId>portal-impl</artifactId> <version>6.1.0</version> <scope>provided</scope> </dependency> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

彼らは、スコープに指定したとして設定したい状況を私に尋ねた、と範囲との違いをコンパイルするように設定します。

説明

実際には、この質問は非常に簡単です。 
(範囲=コンパイルの場合には、デフォルトのスコープ)、それはコンパイルするために、このプロジェクトで言うことであり、テスト、実行ステージは、このアーティファクト(モジュール)は、クラスパス内のJARパッケージを対応する必要があります。 
提供範囲の場合=として、あなたがこのアーティファクトを提供提供されたターゲットコンテナであると考えることがあります。言い換えれば、それだけで、テストフェーズをコンパイルに影響します。テスト段階をコンパイルするには、我々は、クラスパスにjarファイルのパッケージに対応するこのアーティファクトを必要とし、運用段階では、ターゲットコンテナが(私たちはここにあるコンテナをLiferayのような)のjarパッケージを提供していると仮定し、私たちのアーティファクト対応のjarパッケージの必要はありませんA。

例(範囲=設け)

たとえば、私たち自身のプロジェクトはProjectABC C1、C1というクラスがあり、これは、コンパイル時に、クラスB1にアーティファクトのこのポータルのimplをインポートすることを前提とし、我々は確かにこのB1を必要とし、C1かどうかは、コンパイル私たちの提供する範囲なので、右のコンパイラによってコンパイル段階の作業なので、C1ため。同様のテスト段階では、それは無視されます。 
だから、最終的に我々はそれがLiferayのサーバーにデプロイProjectABC、この時間は、私たちが行ってきましたしたい$liferay-tomcat-home\webapps\ROOT\WEB-INF\libすでにポータル-impl.jarのを持って次の検出、つまり、コンテナはこのアーティファクトは、jarファイルを対応して設けられているので、我々運用段階において、クラスC1は、何の問題もなく、容器に直接ポータルimpl.jarのクラスB1を設けてもよいです。

実際のプラグインの動作

私たちは、理論的な部分のちょうど物語を持っている、そして今、私たちは実際のプラグインの実行時間を見て、=スコープを区別コンパイルと範囲=条件を提供する方法です。 
実験は容易に我々はMavenのインストールと最終的なパッケージ部材ProjectABC.war、生成したときことが分かるで/ libの下のWEB-INFを、我々は範囲を含むものとして表されます=ジャー外装部材をコンパイルし、我々はジャー外装部材を提供=スコープを含むものとしてラベル付けされることはありません。パッケージが標的血管に依存競合を展開されたときにも、このような部材の発生を回避します。

従属範囲

三つのクラスパスのmaven 
コンパイル、テスト、実行 
1.compile:デフォルトの範囲、テストの実行をコンパイルするには有効で 
効果的なコンパイルとテスト:2.provided 
3.runtimeを:テストと実行時に有効 
4.test:ときにのみテスト効果的な 
本発明のシステムに関連したコンパイルとテストの有効な、貧しい移植:5.system

導入のpom.xml共通の要素

情報プロジェクトはの制約の一部POM含まれる 
のポンポンの現在のバージョンを指定modelVersionを 
groupIdを(主な項目は、現在のMavenがどのプロジェクトのライトバックの会社のWebサイト+プロジェクト名に属している定義、マーク)、 
たartifactId(実際のプロジェクトモジュール識別、プロジェクト名+モジュール名)、 
バージョン(現在のプロジェクトのバージョン、最初のメジャーバージョン番号0を識別し、0は、第二分岐バージョン番号をマークし、そして第三0は、マイナーバージョン番号、0.0.1、スナップショットのスナップショット、アルファ社内テスト、ベータベータ版、リリースと安定性を示し、 GAは、正式に)解放 
名前項目説明名 
URLアドレスプロジェクト 
の説明プロジェクトの説明 
開発者の開発者リスト 
ライセンス許可 
組織:組織 
の依存関係:依存リストの 
依存関係:依存性が置かプロジェクト座標 
パッケージの範囲はテストによって異なります。スコープを 
オプション:設定はオプションかどうかに依存して 
除外:推移的依存関係にリスト除外 
dependencyManagement依存管理 
ビルドを:の行為のためのサポートを構築 
プラグインのリスト:プラグインの 
親:子が親モジュールのモジュール継承 
集約複数のMavenプロジェクト:モジュールを

参考: 

http://supercharles888.blog.51cto.com/609344/981316/

From:https://blog.csdn.net/mccand1234/article/details/60962283

おすすめ

転載: www.cnblogs.com/GarfieldEr007/p/10994213.html