Maven/AntTasks

Maven Ant Tasksの利用方法

Maven Ant Tasksを利用するとmvnコマンドを叩くことなく、antのbuild.xml内でそれらの作業を行うことができる。 以下では、Eclipse上のbuild.xmlでアーティファクトをビルドして、社内リポジトリにデプロイする方法に絞って説明する。

Maven Ant Tasksのインストール

単純にMaven Ant Tasksのウェブサイトからjarファイルをダウンロードする (2010/7時点ではmaven-ant-tasks-2.1.1.jar)。

これを置く場所としては様々である。

※eclipse環境の場合は、これらを行っても自動的には追加されない模様。ウインドウ>設定>Ant>ランタイムのクラスパスに明示的に指定する必要がある。

pomファイルの用意

mvnコマンドと異なり、Maven Ant Tasksには実行時にgroupIdやartifactIdを指定する仕組みが無い。 これらはすべて「指定されたpomファイル」から取得される。 これをあらかじめ作っておくべきであるが、しかしバージョン番号等はその都度変更したいので、antで自動生成させた方がよいと思われる。 例えば、以下のようなpom.xmlを作成しておくか、自動生成させる。

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>lipermimod</groupId>
  <artifactId>lipermimod</artifactId>
  <version>0.9.0</version>
  <description>lipermimod POM file</description>
</project>

build.xmlの変更

既にプロジェクトにはbuild.xmlが存在すると仮定する。これをprojectタグ部分を以下のように変更する。

<project 
  xmlns:....  <--- もしあれば他の名前空間の指定
  xmlns:artifact="antlib:org.apache.maven.artifact.ant"
  xmlns:....  <-- もしあれば他の名前空間の指定
  default="all">

ローカルリポジトリにインストールする場合

ローカルリポジトリにインストールする場合には以下のようなtargetを記述する。 mypom.xmlは先に作成したPOMファイル、test.jarはアーティファクトjarファイルである。

<target name="install-local">
  <artifact:pom id="mypom" file="mypom.xml" />
  <artifact:install file="test.jar">
    <pom refid="mypom"/>
  </artifact:install>
</target>       

社内リポジトリ等にデプロイする場合

社内リポジトリ等にデプロイする場合は以下のように記述する。

<target name="deploy-inhouse">
  <artifact:pom id="mypom" file="mypom.xml" />  
  <artifact:deploy file="test.jar">
  <remoteRepository url="http://192.168.0.1/maven2/repos"/>
    <pom refid="mypom"/>
  </artifact:deploy>
</target>       

なお、デプロイ先の指定には、http, ftp, scp等の様々なプロトコルが使用可能である。 file://localhost/test」とすると、Windowsの場合には「c:\test」というフォルダが作成されてそこにインストールされる。

なお、ローカルリポジトリへのインストールではチェックサムは作成されないが、デプロイでは自動的にmd5, sha1チェックサムが生成される。

last edited 2010-08-17 04:24:47 by ysugimura