Mavenメモ - サイトのビルドとか

作成 2004/7/21

Mavenでプロジェクトのウェブサイト構築やCVS連携を行ってみます。ここで使ったプロジェクトは、Eclipseとの連携で使ったStruts Webアプリのプロジェクトを流用します。

例によって使いこなしてないので、つっこみあったらください。

使ったプラグイン

CVSと連携する

まずは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サーバで公開

作成したドキュメントを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を使ってみよう


もどる | TOP