Top > MyPage
 

Apache Forrestをさわってみた

Forrestとは

Apache Forrestは、マイコミジャーナルの2007年4月18日の記事によると、「Javaで開発されたパブリッシュフレームワーク。複数のデータソースを入力にとり、1つまたは複数のフォーマットに変換したデータを出力することができる。静的なコンテンツを処理させることができるほか、動的な処理を行うサーバとしても利用することが可能」とのこと。

今回、Forrestをインストールするところからはじめて、どんなことが出来るのか調べて見たいと思う。

Forrestのセットアップ(Windowsで)

Forrestを入手する

Forrestは公式サイトのダウンロードページより、入手することが出来る。Linux版(tar.gz)とWindows版(zip)があるので、間違えないようにすること。

今回はzipの方をダウンロードして、適当な場所に保存した。

環境変数設定

今回は、ダウンロードしたアーカイブを展開してC:\apache-forrest-0.8がForrestのホームディレクトリになるようにした。

展開しただけでは、使うことが出来ないので、次の二つの環境変数を設定する。設定の仕方は省略する。

    FORREST_HOME = C:\apache-forrest-0.8 を新規に設定
    
    Path に %FORREST_HOME%\bin を追加

設定した後、コマンドプロンプトでforrest -versionと打ち込んで、

Apache Forrest.  Run 'forrest -projecthelp' to list options


Apache Ant version 1.6.5 compiled on May 16 2006

のように出てきたら、環境変数の設定がうまくいっているということなので、インストール完了である。

注意点

この時点で、ひとつ、注意点がある。

それは

という点である。

今回、参考にしたサイトのひとつSATOSHI ABE ON BLOG(2007年7月28日の記述)でも書かれているが、java1.6の環境で引数なしのforrestコマンド実行するとエラーが発生するのである。

したがって、これを書いている時点でForrestを使いたい場合1.4 <= Javaのバージョン < 1.6である必要がある。

forrest実行

公式のチュートリアルのforrestコマンドに関する記述を参考にやってみる。

新しいForrestプロジェクト

  • まず、適当に新しいプロジェクトのためのフォルダを作る。仮に forrest_new_project とする。
  • コンソールを開いて、そのディレクトリをカレントにする。
  • コマンド forrest seed を実行する。

という手順で実行すると、そのディレクトリに、以下のような雛形が出来る。

forrest_new_project
├ build
│ └ tmp
│    ├ build-info.xml
│    └ projfilters.properties
├ src
│ └ documentation
│    ├ classes
│    │ └ CatalogManager.properties
│    ├ conf
│    ├ content
│    │ ├ xdocs
│    │ │ ├ images
│    │ │ │ ├ group.svg
│    │ │ │ ├ group-logo.gif
│    │ │ │ ├ icon-e.png
│    │ │ │ ├ project.svg
│    │ │ │ ├ project-logo.gif
│    │ │ │ └ usemap.gif
│    │ │ ├ samples
│    │ │ │ ├ locationmap
│    │ │ │ │ └ index.xml
│    │ │ │ ├ showonlywhenselected
│    │ │ │ │ ├ page1.xml
│    │ │ │ │ └ page2.xml
│    │ │ │ ├ subdir
│    │ │ │ │ ├ book-sample.xml
│    │ │ │ │ ├ hello.zip
│    │ │ │ │ └ index.xml
│    │ │ │ ├ ascii-art.xml
│    │ │ │ ├ cocoon-pyramid.aart
│    │ │ │ ├ custom.xml
│    │ │ │ ├ customSchema.xml
│    │ │ │ ├ demo-i18n.de.xml
│    │ │ │ ├ demo-i18n.fr.xml
│    │ │ │ ├ demo-i18n.nl.xml
│    │ │ │ ├ demo-i18n.xml
│    │ │ │ ├ ellipse.svg
│    │ │ │ ├ embedded_html.html
│    │ │ │ ├ faq.xml
│    │ │ │ ├ helloAgain.pdf
│    │ │ │ ├ hello-v10.dtd
│    │ │ │ ├ howto-howto.xml
│    │ │ │ ├ i18n.xml
│    │ │ │ ├ icon-d.png
│    │ │ │ ├ index.xml
│    │ │ │ ├ linking.xml
│    │ │ │ ├ sample.xml
│    │ │ │ ├ static.xml
│    │ │ │ ├ svg.xml
│    │ │ │ ├ usemap.xml
│    │ │ │ └ xml-entities.xml
│    │ │ ├ favicon.ico
│    │ │ ├ hello.pdf
│    │ │ ├ index.xml
│    │ │ ├ site.xml
│    │ │ └ tabs.xml
│    │ ├ locationmap.xml
│    │ └ test1.html
│    ├ resources
│    │ ├ images
│    │ │ ├ sub-dir
│    │ │ │ └ icon-c.png
│    │ │ ├ ellipse-2.svg
│    │ │ ├ icon.png
│    │ │ ├ icon-a.png
│    │ │ ├ icon-b.png
│    │ │ └ project-logo.png
│    │ ├ schema
│    │ │ ├ catalog.xcat
│    │ │ ├ hello-v10.dtd
│    │ │ └ symbols-project-v10.ent
│    │ ├ stylesheets
│    │ │ └ hello2document.xsl
│    │ └ themes
│    ├ translations
│    │ ├ langcode.xml
│    │ ├ languages_de.xml
│    │ ├ languages_en.xml
│    │ ├ languages_es.xml
│    │ ├ languages_fr.xml
│    │ ├ languages_nl.xml
│    │ ├ menu.xml
│    │ ├ menu_af.xml
│    │ ├ menu_de.xml
│    │ ├ menu_es.xml
│    │ ├ menu_fr.xml
│    │ ├ menu_it.xml
│    │ ├ menu_nl.xml
│    │ ├ menu_no.xml
│    │ ├ menu_ru.xml
│    │ ├ menu_sk.xml
│    │ ├ tabs.xml
│    │ ├ tabs_de.xml
│    │ ├ tabs_es.xml
│    │ ├ tabs_fr.xml
│    │ └ tabs_nl.xml
│    ├ README.txt
│    ├ sitemap.xmap
│    └ skinconf.xml
├ forrest.properties
├ forrest.properties.dispatcher.properties
└ forrest.properties.xml

雛形が書き出されたところで、ディレクトリを移動せずに、今度はforrestと引数無しで実行する。

すると、build以下にsrc以下の内容から生成された静的ファイルが書き出される。

forrest_new_project
└ build
 ├ site
 │ ├ images
 │ │ └ icon-b.png
 │ └ ja
 │    ├ images
 │    │ ├ sub-dir
 │    │ │ └ icon-c.png
 │    │ ├ built-with-forrest-button.png
 │    │ ├ ellipse-2.png
 │    │ ├ group.png
 │    │ ├ icon-a.png
 │    │ ├ icon-e.png
 │    │ ├ instruction_arrow.png
 │    │ ├ project.png
 │    │ └ usemap.gif
 │    ├ old_site
 │    │ └ test1.html
 │    ├ pluginDocs
 │    │ ├ plugins_0_70
 │    │ │ ├ index.html
 │    │ │ └ index.pdf
 │    │ └ plugins_0_80
 │    │    ├ index.html
 │    │    └ index.pdf
 │    ├ samples
 │    │ ├ images
 │    │ │ ├ icon.png
 │    │ │ ├ icon-a.png
 │    │ │ └ project-logo.png
 │    │ ├ locationmap
 │    │ │ ├ index.html
 │    │ │ └ index.pdf
 │    │ ├ showonlywhenselected
 │    │ │ ├ page1.html
 │    │ │ ├ page1.pdf
 │    │ │ ├ page2.html
 │    │ │ └ page2.pdf
 │    │ ├ subdir
 │    │ │ ├ hello.zip
 │    │ │ ├ index.html
 │    │ │ └ index.pdf
 │    │ ├ ascii-art.html
 │    │ ├ ascii-art.pdf
 │    │ ├ cocoon-pyramid.png
 │    │ ├ custom.html
 │    │ ├ custom.pdf
 │    │ ├ customSchema.html
 │    │ ├ customSchema.pdf
 │    │ ├ demo-i18n.html
 │    │ ├ demo-i18n.pdf
 │    │ ├ ellipse.png
 │    │ ├ ellipse.svg
 │    │ ├ embedded_html.html
 │    │ ├ embedded_html.pdf
 │    │ ├ embedded_html.xml
 │    │ ├ faq.html
 │    │ ├ faq.pdf
 │    │ ├ helloAgain.pdf
 │    │ ├ howto-howto.html
 │    │ ├ howto-howto.pdf
 │    │ ├ i18n.html
 │    │ ├ i18n.pdf
 │    │ ├ icon-d.png
 │    │ ├ index.html
 │    │ ├ index.pdf
 │    │ ├ linking.html
 │    │ ├ linking.pdf
 │    │ ├ sample.html
 │    │ ├ sample.pdf
 │    │ ├ sample.xml
 │    │ ├ static.html
 │    │ ├ static.pdf
 │    │ ├ svg.html
 │    │ ├ svg.pdf
 │    │ ├ usemap.html
 │    │ ├ usemap.pdf
 │    │ ├ xml-entities.html
 │    │ └ xml-entities.pdf
 │    ├ skin
 │    │ ├ css
 │    │ ├ images
 │    │ │ ├ add.jpg
 │    │ │ ├ built-with-forrest-button.png
 │    │ │ ├ chapter.gif
 │    │ │ ├ chapter_open.gif
 │    │ │ ├ current.gif
 │    │ │ ├ error.png
 │    │ │ ├ external-link.gif
 │    │ │ ├ fix.jpg
 │    │ │ ├ forrest-credit-logo.png
 │    │ │ ├ hack.jpg
 │    │ │ ├ header_white_line.gif
 │    │ │ ├ info.png
 │    │ │ ├ instruction_arrow.png
 │    │ │ ├ label.gif
 │    │ │ ├ page.gif
 │    │ │ ├ pdfdoc.gif
 │    │ │ ├ poddoc.png
 │    │ │ ├ printer.gif
 │    │ │ ├ rc-b-l-15-1body-2menu-3menu.png
 │    │ │ ├ rc-b-r-15-1body-2menu-3menu.png
 │    │ │ ├ rc-b-r-5-1header-2tab-selected-3tab-selected.png
 │    │ │ ├ rc-t-l-5-1header-2searchbox-3searchbox.png
 │    │ │ ├ rc-t-l-5-1header-2tab-selected-3tab-selected.png
 │    │ │ ├ rc-t-l-5-1header-2tab-unselected-3tab-unselected.png
 │    │ │ ├ rc-t-r-15-1body-2menu-3menu.png
 │    │ │ ├ rc-t-r-5-1header-2searchbox-3searchbox.png
 │    │ │ ├ rc-t-r-5-1header-2tab-selected-3tab-selected.png
 │    │ │ ├ rc-t-r-5-1header-2tab-unselected-3tab-unselected.png
 │    │ │ ├ README.txt
 │    │ │ ├ remove.jpg
 │    │ │ ├ rss.png
 │    │ │ ├ spacer.gif
 │    │ │ ├ success.png
 │    │ │ ├ txtdoc.png
 │    │ │ ├ update.jpg
 │    │ │ ├ valid-html401.png
 │    │ │ ├ vcss.png
 │    │ │ ├ warning.png
 │    │ │ └ xmldoc.gif
 │    │ ├ scripts
 │    │ ├ translations
 │    │ ├ basic.css
 │    │ ├ breadcrumbs.js
 │    │ ├ breadcrumbs-optimized.js
 │    │ ├ CommonMessages_de.xml
 │    │ ├ CommonMessages_en_US.xml
 │    │ ├ CommonMessages_es.xml
 │    │ ├ CommonMessages_fr.xml
 │    │ ├ fontsize.js
 │    │ ├ getBlank.js
 │    │ ├ getMenu.js
 │    │ ├ menu.js
 │    │ ├ note.txt
 │    │ ├ print.css
 │    │ ├ profile.css
 │    │ ├ prototype.js
 │    │ └ screen.css
 │    ├ broken-links.xml
 │    ├ hello.pdf
 │    ├ index.html
 │    ├ index.pdf
 │    ├ linkmap.html
 │    ├ linkmap.pdf
 │    ├ locationmap.xml
 │    └ test1.html
 ├ tmp
 │ ├ cocoon-work
 │ │ └ cache-dir
 │ │    ├ cocoon-ehcache-1.data
 │ │    └ cocoon-ehcache-1.index
 │ ├ brokenlinks.xml
 │ ├ build-info.xml
 │ ├ input.xmap
 │ ├ internal.xmap
 │ ├ locationmap.xml
 │ ├ output.xmap
 │ ├ pluginlist2fetchbuild.xml
 │ ├ plugins-1.xml
 │ ├ plugins-2.xml
 │ ├ projfilters.properties
 │ └ resources.xmap
 └ webapp
    ├ conf
    └ WEB-INF
       └ logs
          ├ access.log
          ├ core.log
          ├ debug.log
          ├ error.log
          ├ flow.log
          ├ idgen.log
          ├ linkrewriter.log
          ├ locationmap.log
          ├ sitemap.log
          └ xmlform.log

ここでforrest runを実行すると、Jettyが立ち上がり、ブラウザでhttp://localhost:8888/にアクセスすることで、このサンプルをブラウザで確認することが出来るようになる。

プロジェクトのカスタマイズ

チュートリアルを見ると、まずsrc/documentation/skinconf.xmlについて、触れられている。そのファイルの内容を見たところプロジェクト名や、url、favicon、クレジットなど、全体に影響があるような設定を行うファイルであるようだ。

ためしにproject-nameのプロパティをMyProjectからWAWAWAWAWAに書き換えてから、forrestを実行してhtmlを書き出したところ、ブラウザで表示した時に大きくMyProjectと表示されていたところにWAWAWAWAWAとでていた。