5.0.6
長いことほったらかしにしてしまいました。5.0.6も出たことだし、頑張って再開しようと思います。
とりあえず、今作ってるものを昨日5.0.6にアップグレードしたので、5.0.5から5.0.6にアップグレードする手順を書きます。
pom.xml内のTapestryバージョンを5.0.6に書き換える
<properties> <tapestry-release-version>5.0.6</tapestry-release-version> </properties>
テンプレートファイルの拡張子を.htmlから.tmlに変更する
MacOSXやLinuxなどでSubversionを使ってるなら、次のようなコマンドでやると楽でしょう。
find . -type f -name '*.html' | while read file; do svn move $file ${file%html}tml; done
Windowsでは次のコマンドでできるらしい(未確認、MLより)
FOR /R %A in (*.html) do svn rename %~pnA.html %~pnA.tml
テンプレートファイルをWEB-INF以下からコンテキストルートに移動する
拡張子の変更とあわせると、例えば myapp/WEB-INF/Start.html にあったテンプレートは myapp/Start.tml とします。
myapp/src/main/resources 以下にテンプレートを置いている場合は移動する必要はないようです(拡張子の変更は必要)。私はこちらに置く方が好きです。EclipseのPackageExplorerで見たときに見やすいので。
@Injectアノテーションの修正
tapestry-coreの@Injectアノテーションは廃止されてtapestry-iocの@Injectに統合されました。
org.apache.tapestry.annotations.Inject をインポートしている箇所はコンパイルエラーになるので、org.apache.tapestry.ioc.annotations.Inject に修正します。
AppModule.javaの修正
ロギングライブラリがcommons-loggingからSLF4jに変わりました。
そのため、AppModule.javaのbuildTimingFilterメソッドの引数の型を Log から Logger に変更し、それにあわせてimport文も修正します。
public RequestFilter buildTimingFilter(final Logger log) {
-import org.apache.commons.logging.Log; +import org.slf4j.Logger;
jettyのlog4jも1.2.14にする
最初のpom.xmlの修正でmavenの依存関係としてはlog4j-1.2.14.jarを参照するようになりますが、jettyの方で古いlog4jを使っている場合は jetty/ext 内にあるlog4jをlog4j-1.2.14.jarに置き換える必要があります。これをしないと実行時に次のエラーが発生します。
HTTP ERROR: 500 org.apache.log4j.Logger.isTraceEnabled()Z RequestURI=/myapp/ Powered by Jetty://
以上がだいたい必須になるだろう手順です。以下は私が気づいた範囲で必要に応じてやる内容。
@InjectComponentは@InjectContainerに変わりました
Mixinで @InjectComponent アノテーションを使っている場合 @InjectContainer に書き換える必要があります。
ComponentResourcesのgetLogメソッドはgetLoggerにメソッド名が変わりました
PageRenderSupportインターフェース, Linkインターフェースにメソッドが追加されました
これらの実装を置き換えたりとかしている場合は、新しいメソッドの実装を加える必要があります。
とりあえず、こんなところで私のプロジェクトは5.0.6に問題無くアップグレードできたようです。