問題を再現するために、
前回ここで友人はつまり、彼らはの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