0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ant と Maven ③ Apache Ivy の詳細【ivy.xmlを読む】

Posted at

 こちらは「Ant と Maven ② Apache Ivy の詳細【build.xmlを読む】」の続きです。

 目次記事はこちらです。

ivy.xml の内容

 前の記事で build.xml については確認しました。次に ivy.xml を見ていきます。まずは ivy.xml の中身を見ておきましょう。

ivy.xml
<!--
   Apache のライセンスに関するコメント
-->
<ivy-module version="2.0">
    <info organisation="org.apache" module="hello-ivy"/>
    <dependencies>
        <dependency org="commons-lang" name="commons-lang" rev="2.6"/>
        <dependency org="commons-cli" name="commons-cli" rev="1.4"/>
    </dependencies>
</ivy-module>

 各タグについてその役割を見ていきます。


ivy-module タグ
<ivy-module version="2.0">
    ~~~ 略 ~~~
</ivy-module>

 初めに現れる <ivy-module version="2.0"> は ivy.xml のルート要素です。build.xml の project タグと似たようなもので、<ivy-module> タグでファイルの中身全体を囲います。
 <ivy-module> タグには verion 属性があります。現在、正しく ivy.xml を解析するには verion="2.0" しかありません。もう脳死で <ivy-module version="2.0"> って打っておきましょう。


info タグ
    <info organisation="org.apache" module="hello-ivy"/>

 作成しているプロジェクトの情報を載せるタグが info タグです。プロジェクトの情報といってもわかりにくいと思いますが、まずは info タグに付属する属性の表を見てください。

属性 概要
organisation 組織名やグループID。Maven の groupId と同じ
module モジュール名。Maven の artifactId と同じ
revision バージョン番号。Maven の version と同じ
status モジュールの開発状態。status="integration" なら開発中みたいな

 ほかにも属性はありますが、主に使用されるのはこの辺です。上記の表に従って、<info organisation="org.apache" module="hello-ivy"/> の意味は「org.apache というグループIDを持つ組織が開発した hello-ivy というモジュール」になります。

 実際にはこれに加えてバージョンなども書くことが多いです。

バージョンとか追加した例
<info organisation="org.apache" module="hello-ivy" revision="0.1.3" status="integration"/>

 このように書けば「org.apache というグループIDを持つ組織が開発した hello-ivy というモジュールは、バージョン 0.1.1integration(開発中)です」って意味になります。

 そのほかの属性について、詳しくは公式ドキュメントまで!


dependencies・dependency タグ
    <dependencies>
        <dependency org="commons-lang" name="commons-lang" rev="2.6"/>
        <dependency org="commons-cli" name="commons-cli" rev="1.4"/>
    </dependencies>

 プロジェクトが依存するモジュールを列挙するのが dependencies タグです。dependencies タグは一つの ivy.xml に一つだけ記載します。
 dependencies タグの中には、依存するライブラリを dependency タグで並べます。ここに記載したモジュールは、Ant の実行時に Maven リポジトリからダウンロードされます。
 dependency タグの属性でどんなライブラリに依存するのかを明記します。指定する属性の内容は下記の表のような感じです。

属性 概要
org 依存するライブラリの組織名。例:org.junit.jupiter
name 依存するライブラリの名前。例:junit-jupiter-api
rev 依存するライブラリのバージョン。例:"5.10.3"

 これまたほかにもいろいろな属性がありますが、詳しくは公式ドキュメントまで~。

 以上です。思ったよりシンプルでしたね。

ivy.xml の configration タグ

 ivy.xml では、依存関係の使い分けconfigurations タグで行うことができます。

 例えばテストでしか使いたくないライブラリがあったとき、本番環境にも紛れ込むのは嫌ですよね。そんな時は下記のように configuration タグを挿入します。

configuration タグ
<ivy-module version="2.0">
    <info organisation="org.apache" module="hello-ivy"/>

    <configurations>
        <conf name="compile"/>
        <conf name="test" extends="compile"/>
    </configurations>

    <dependencies>
    ~~~ 略 ~~~
</ivy-module>

 configurations タグの中では conf タグというものでコンフィグレーション(構成)を定義します。ここで定義できる構成の名前は自由に決めることができます
 上記の例では compile という構成と、 test という構成を作っています。これ以降、ivy.xml の dependency タグで、「このモジュールは test の時だけ使う!」とか指定することができます。

 また、<conf name="test" extends="compile"/> を見ると、extends 属性が指定されているのがわかります。extends 属性は「構成の継承」を行う属性です。今回の例でいえば、「テスト時にコンパイル用の構成も引き継ぐ(依存ライブラリもダウンロードする)」って感じです。

 configurations タグがある場合の dependency タグの書き方も見ておきます。

dependency タグ(configuration を指定)
    <dependencies>
        <dependency org="commons-lang" name="commons-lang" rev="2.6" conf="compile->default"/>
        <dependency org="commons-cli" name="commons-cli" rev="1.4" conf="compile->default"/>
        <dependency org="org.junit.jupiter" name="junit-jupiter-api" rev="5.10.3" conf="test->default"/>
    </dependencies>

 新たに conf 属性という属性が追加されました。conf 属性では conf="myConf->dpConf" という書き方をします。
 conf="myConf->dpConf" の意味は「自分で定義した構成 myConf に依存ライブラリ(依存モジュール)が持つ構成 dpConf を割り当てる」という意味です。

 ちょっとわかりにくいかもしれませんが、ダウンロードしたいライブラリも当然コンフィグレーションを持っています。ダウンロードする際に相手方ライブラリのどの構成が欲しいかをここで指定できます。
 一般的にどのライブラリも default 構成を持っているので、基本 default を指定します。

 次の記事から Maven に入りますが、すでに Maven に振れたことがある人は Maven の scope の柔軟バージョンと理解するといいです。

 Ivy についてはこれで終わりです。

次の記事

Mavenの基礎 作成中...

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?