作成 2004/7/21
Mavenでプロジェクトのウェブサイト構築やCVS連携を行ってみます。ここで使ったプロジェクトは、Eclipseとの連携で使ったStruts Webアプリのプロジェクトを流用します。
例によって使いこなしてないので、つっこみあったらください。
使ったプラグイン
まずはSCMと連携させてみましょう。SCM(Source Code Management System)はCVSとかSubversionとかそういうやつです。ここではCVSを使います。
この実験にはうちのFedoraサーバ上のCVSを使いました。pserverとsshでの接続が可能なように設定しています(CVSサーバの設定についてはここでは説明していません)。
CVSの場所は、project.xmlのrepository要素に記述します。
project.xmlでrepositoryの設定を行います。とりあえず最低限必要なのはconnection要素です。connection要素で指定したリポジトリからファイルが取得されます。ここにはpserverの公開CVSなどを指定することが多いようです。developerConnectionは開発者向けのコネクション、urlにはWebインターフェイス(CVSWebとか)のURLを指定します。
<repository> <connection>scm:cvs:pserver:miya@192.168.1.10:/var/cvs:sweb</connection> <developerConnection>scm:cvs:ssh:miya@192.168.1.10:/var/cvs:sweb</developerConnection> <url>http://192.168.1.10/viewcvs/sweb/</url> </repository>
この情報はサイト生成をしたときのSource Repositoryのページにも反映されます。
画面 生成されたプロジェクトサイトのSource Repositoryページ
CVSへの最初のプロジェクト(モジュール)のインポートはどうするんでしょうか?(←@TODO) mavenを使ってもできるのかもしれませんが、やり方がわかりません。 ここでは普通のCVSクライアントを使って、インポートしました。
プロジェクトのアップデート(CVS→ローカル)は、scmプラグインのupdate-projectゴールで実行できます。
C:\project\etc\maven4\sweb>maven scm:update-project __ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ |_| |_\__,_|\_/\___|_||_| v. 1.0 build:start: scm:parse-connection: [echo] Using connection: scm:cvs:pserver:miya@192.168.1.10:/var/cvs:sweb Using SCM method: cvs Using CVSROOT: :pserver:miya@192.168.1.10:/var/cvs Using module: sweb scm:validate: scm:update-project: scm:cvs-update-project: [cvs] Using cvs passfile: C:\Documents and Settings\miya\.cvspass [cvs] ? .classpath [cvs] ? .project [cvs] ? setenv.bat BUILD SUCCESSFUL Total time: 3 seconds Finished at: Wed Jul 21 21:26:28 JST 2004
プロジェクトのアップデート、サイト構築(テストなどのレポート作成)をスケジューラからキックすることで、「毎晩自動テスト&ビルド」が可能になります。
ちょっと不明なのが認証(←@TODO)。デフォルトで.cvspassが利用されるみたいで、最初にcvs loginとかしないと接続できなかったりしました。
プロジェクトの管理者役の人がプロジェクトのインポートをすましたとします。他の開発者はどうやって環境セットアップをするのでしょうか?
CVSクライアントで直接ソースを取得したり、ソースのアーカイブをダウンロードしてもよさそうですが、maven の scm:checkout-project ゴールを使って、環境設定(というかプロジェクトのチェックアウト)を行えます。
scm:checkout-projectのコマンドの説明は、プロジェクトのSource Repositoryのページに書かれています。例えば以下のようなコマンドを実行してプロジェクトをチェックアウトします。
maven scm:checkout-project -Dmaven.scm.method=cvs -Dmaven.scm.cvs.module=sweb -Dmaven.scm.cvs.root=:pserver:anoncvs@192.168.1.10:/var/cvs -Dmaven.scm.checkout.dir=.(実際は一行)
プロジェクトのWebサイトの構築は、siteプラグインで行えます。デフォルトゴールはgenerateでJUnitテストやJavaDoc含む種々のドキュメントが生成されます。
C:\project\etc\maven4\sweb>maven site __ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ |_| |_\__,_|\_/\___|_||_| v. 1.0 build:start: ...(略) C:\project\etc\maven4\sweb\target\generated-xdocs\task-list.xml [echo] Generating C:/project/etc/maven4/sweb/target/docs/team-list.html from C:\project\etc\maven4\sweb\target\generated-xdocs\team-list.xml BUILD SUCCESSFUL Total time: 9 seconds Finished at: Wed Jul 21 21:45:43 JST 2004
この結果は、target/docs/index.htmlから(WebサーバにUPしなくても)閲覧できます。
日本語のドキュメントが文字化けする場合は出力エンコードを指定します。project.propertiesに以下のような記述を追加します。
maven.docs.outputencoding=UTF-8
レポートは、デフォルトでは以下のものが生成されます。
こんなにいろいろいらんという人は、project.xmlのreports要素で実行、出力するレポートを制御できます。
リスト JUnitとJavaDocだけにしたもの
<reports> <report>maven-junit-report-plugin</report> <report>maven-javadoc-plugin</report> </reports>
作成したドキュメントをWebサーバにアップするには、site:〜deployゴールを使います。scpやファイルコピーによりアップ(デプロイ)することが可能です。ここでは、Mavenを実行するサーバとWebサーバが同じPCにあるとして、単なるファイルコピーを使います。
まず、project.xmlでデプロイ先のディレクトリ(siteDirectory)とサイトのアドレス(siteAddress)を指定します。
リスト project.xmlの編集
<siteAddress>miya.ws</siteAddress> ←サイトのホスト名 <siteDirectory>/var/www/html/sweb/</siteDirectory> ←コピー先(Webサーバからアクセスするファイル)
で、maven site:fsdeploy でデプロイします。
画面 デプロイ実行
[miya@cube sweb]$ maven site:fsdeploy __ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ |_| |_\__,_|\_/\___|_||_| v. 1.0 build:start: xdoc:init: site:init: site:fsdeploy: [echo] siteAddress = miya.ws siteDirectory = /var/www/html/sweb/ [copy] Copying 117 files to /var/www/html/sweb BUILD SUCCESSFUL Total time: 3 seconds Finished at: Wed Jul 21 21:59:35 JST 2004
これでWebサーバ上で見えます。
設定する要素はまだまだいろいろありますが、何から手をつけていいやらよくわかりません。一度、実際のプロジェクトに適用するとしっくりきそうですが。とりあえず以下のドキュメントを見ながらいろいろ設定していけそうです。
siteプラグインの説明は http://maven.apache.org/reference/plugins/site/index.html(Reference→Plugins→Maven Plugins→Maven Site Plugin)にあります。
project.xmlに指定する要素の説明は http://maven.apache.org/reference/project-descriptor.html(Reference→Project Descriptor)にあります。
User Guideも一通り読みたいかも。また、実際にmavenを利用しているプロジェクトの設定ファイルを見るのもいいかもしれません。
Jakarta Project 徹底攻略2 Mavenを使ってみよう