--
--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:

26
2009

Maven2導入中

CATEGORY開発環境
最近よく見かけるMavenって何だろう?と思って調べてみた。

TECHSCORE - Maven

なるほど、Antみたいなビルドツール・・・ではなくて、もっとプロジェクト管理のためにルール作りしたものということか?
ビルドもできるけどそれだけではなく、依存関係やらの管理や配置までも含めたプロジェクト全体のためのツールと。

普段自分がAntで行っている、ビルドやJavadoc、配布物の作成についても、決まったソース構成になっていれば、標準的な仕組みで可能との事。
・・・まぁ、その3つは既に多少汎用的に使えるAntスクリプトを自分で作っちゃったけど(^^;

ちびちびプログラム書いている現時点ではあまり移行するメリットは見えなかったけど、自己流のAntよりMavenのルールにのっとってる方が、第三者がわかりやすいよ!とか、いろんなOSSのプロジェクトがMavenに(ry とかの宣伝文句を受けて、ためしに自宅のソースを移行させてみることにした。


とりあえず、普段Eclipseを使っているので、Eclipse用のプラグインをm2eclipseというのをインストール。

public static void main - Eclipse 3.4.2とm2eclipseでMavenを使ったJavaのライブラリ管理

アップデートサイトには Maven Embedder という実装があり、Eclipseから使う分には本体をいれずともこれだけでよい模様。
が、↑の手順にあるような、Eclipseから依存関係を追加する「Add Dependency」のコマンドがさっぱり機能しない。
インデックスの再更新もうまくいかない。なんか
[WARN] Error scanning context: local Cannot delete D:\Eclipse\.metadata\.plugins\org.maven.ide.eclipse\nexus\local\_0.cfs
Unable to reindex local repository
とか言われる。Vistaだからかと思って、会社のXPのマシンのEclipseでも試してみたが、同じような状況に。
両方とも同じ手順・時期にインストールしたから、その辺に問題があるのかも?

別途普通のMaven2をインストールして、Eclipseからもそちらを使うように設定してみたが、改善せず。
ただ、pom.xml を編集して依存関係を追加する分には、きちんと認識され機能する模様。
(最初に試したライブラリが log4j で、ものの見事にハマったが(TT)
最終的に、別にEclipseから追加するのが目的じゃないし・・・と妥協して、とりあえずこの機能は諦める(汗


インストールが無事(?)終わったところで、普通のEclipseのJavaプロジェクトを、Mavenのプロジェクトに移行開始。
ゴミファイルやらが残ると嫌だったので、↑のサイトの手順で、Eclipseから「Maven Project」を作成したのち、既存プロジェクトからソース一式をコピー。
そのままだとEclipse側のJavaコンパイラーの設定が1.4とかになっているので、ソース・環境にあわせて変更。
pom.xml の「maven-compiler-plugin」にも、バージョンなんかを記述。
そしてあっさりjar作成完了。早!
そしてこの勢いのまま、こちらも多少 pom.xml をいじったが mvn javadoc:javadoc とJavadocも生成完了。早!!
確かにAntで一から作るよりはぜんぜん早い。

後はソースとjarとJavadocをまとめて配布物が作れれば、自分の用途では問題なしだ。
標準だと、若干期待している配布物と違うようだし、Javadocは自動的に生成されないようなので、「maven-assembly-plugin」「maven-javadoc-plugin」の設定を多少変更しよう。

・・・日本語の資料少ねええええぇぇぇぇぇぇぇorz

Antはネット上にマニュアルの日本語訳があったから、タスクの使い方とかも困らなかったけど、Mavenはそれ自体の説明(上のTECHSCOREとか)や、ブログなんかでのピンポイントな話はあっても、設定ファイルの構文やら意味やらの解説が全然無いorz
たぶん、それを調べようと思ったらプラグインの公式サイト(英語)を頑張って読むしかない。
カスタマイズしようと思わなければ問題ないのかもしれないが、これは正直、Antと比べてかなりのデメリットだと思う。
少なくとも、俺の職場みたいなヘタレな所には布教できない(--;

今回はしょうがないので、頑張って公式サイトを読んで、assembly用のxmlを追加して目的を達成しました。
でも、調べたり試したりしているうちに、ファイル名とファイル構成さえ受け入れれば、標準のassemblyとpom.xmlの変更だけで済むこともわかったので、多少気に食わないものの自分をあわせることにしました。。。

最終的に出来上がった pom.xml はこんな感じ。JUnit4でも動いてるっぽいね?
使い慣れたらもっと肥大化進化していくと思うが、これで普段使う分には大丈夫かなぁ?
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jp.honeplus.example</groupId>
<artifactId>example</artifactId>
<name>Example App</name>
<version>0.0.1-SNAPSHOT</version>
<description>サンプルアプリ</description>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>[4.0, 5.0)</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<debug>true</debug>
<encoding>UTF-8</encoding>
<source>6</source>
<target>6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>jp.honeplus.example.Console</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>bin</descriptorRef>
<descriptorRef>project</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<source>6</source>
<links>
<link>http://java.sun.com/javase/ja/6/docs/ja/api/</link>
<link>http://junit.org/junit/javadoc/4.4/</link>
</links>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
スポンサーサイト

Tag: Eclipse Java Maven2

0 Comments

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。