まず、Ivy is not Maven;)アイビーであるのに対し
Maven2をには、ソフトウェアプロジェクトの管理や理解のためのツールであります依存関係管理ツールのみ。
Ivyは、構成と呼ばれる独自の概念に大きく依存しています。
ivyでは、モジュール構成はであり、使用する方法またはモジュールを見る方法です。
たとえば、モジュールにテストおよびランタイム設定を含めることができます。しかし、あなたはmysqlとoracle設定を持つこともできます。または、休止状態とjdbc構成です。各構成で
あなたが宣言することができます:アーティファクト(JAR、WAR、...)が必要とされているものを
- を。
- あなたの他のモジュールへの依存関係と、あなたが必要とする依存関係の構成について記述してください。これは構成マッピングと呼ばれます。
したがって、conf属性は次のように正確になります。依存関係の構成マッピングについて説明します。
mapped child elementは、「->
シンボルの右側」であり、マップされた依存関係構成の名前を表します。 '*'
ワイルドカードを使用して、このモジュールのすべての構成を指定できます。その側に
Maven2を範囲と呼ばれるものがあります。
依存関係をテストスコープの一部またはビルドタイムスコープの一部として宣言できます。
このスコープに依存して、スコープに依存する依存関係を持つ依存関係アーティファクト(maven2のモジュールごとに1つのアーティファクトのみ)を取得します。スコープはmaven2であらかじめ定義されており、変更することはできません。意味
:
は、多くのライブラリをダウンロードし、不要な依存関係のたくさんがあります。
たとえば、Hibernateは一連のJBoss JARをダウンロードし、Display TagはさまざまなWebフレームワークJARをすべてダウンロードします。私は追加したのとほぼ同じくらい多くの依存関係を除いて自分自身を見つけました。
問題は、Hibernateはいくつかのキャッシュ実装、いくつかの接続プールの実装で使用することができるということである...そして、これはスコープで管理することができない、のwheresアイビー構成は、この種の問題にエレガントなソリューションを提供しています。そのproxoolとOSCacheの実装で休止状態を取得するために
<dependency org="hibernate" name="hibernate" rev="2.1.8" conf="default->proxool,oscache"/>
、そのよう:
たとえばは、ツタで、仮定Hibernateはその後、あなたがそのような依存関係を宣言することができ、この1ようなツタのファイルがあります。
<dependency org="hibernate" name="hibernate" rev="2.1.8" conf="default->dbcp,swarmcache"/>
dbcpとswarmcacheで休止状態になる。 「proxool,oscache
」または「dbcp,swarmcache
」にデフォルトmaster
設定をマッピングすることにより
、あなたが必要なものを指定し、正確モジュールから「休止状態」。
これらの「proxool、...」引数は、ライブラリに関連付けられたモジュールごとに定義されたivy構成をリストすることで見つけることができます。例えば:
<ivy-module version="2.0">
<info organisation="ssn-src" module="pc"/>
<configurations defaultconfmapping="default->default">
<conf name="default" />
<conf name="provided" description="they are provided by the env." />
<conf name="compile" extends="default,provided" />
<conf name="war" extends="default"/>
</configurations>
<dependencies>
Example:
のはmodA
は、二つの構成、デフォルトおよびテストを持っているとしましょう。
実際には、dependency要素のconf
属性を削除することは非常に珍しいことです。 modA
ため
ivy.xml
は依存関係があるかもしれません:
<dependency org="theteam" name="modB" rev="1.0" conf="default->*" />
デフォルトからではなく、デフォルトとテストの両方から開始しています。
上記の例では、modAのデフォルトはmodBのconf1、conf2、およびconf3に依存しています。
それともMODAのデフォルトは唯一MODBのCONF1に依存していることを言いたいかもしれません:
<dependency org="theteam" name="modB" rev="1.0" conf="default->*conf1*" />
リクエストに応じて詳細をいくつか追加しました – VonC