jspc

非推奨

このタスクをTomcatのJasper JSPコンパイラで使用する場合、代わりにTomcatに付属するタスクの使用を真剣に検討する必要があります。 このタスクはTomcat 4.xに対してのみテストされています。Tomcat 5.xには修正されない既知の問題があるため、代わりにTomcatのjspcタスクを使用してください。
コンテナ固有のJSPコンパイラに依存する代わりに、生のファイル(*.jsp)をデプロイし、コンテナの組み込み関数を使用することをお勧めします。デプロイ後に、デプロイされたWebアプリケーションに対してテストスイート(例:CactusまたはHttpUnit)を実行します。これにより、テスト結果とコンパイル済みのJSPの両方が得られます。

説明

JSPコンパイラを実行し、JSPページをJavaソースファイルに変換するApache Antタスク。

このタスクは、JSPページの最初の呼び出しを高速化するため、フルJDKがインストールされていないサーバーへのデプロイのため、または単にページをデプロイせずに構文チェックするためにも使用できます。ほとんどの場合、javacタスクは通常、ビルドプロセスの次の段階です。このタスクは、不要な再コンパイルを防ぐための基本的な依存関係チェックを実行します。このチェックはソースとデスティネーションのタイムスタンプを比較し、クラスまたはタグライブラリの依存関係、または<jsp:include>参照は考慮しません。

デフォルトでは、このタスクはJasper JSPコンパイラを使用します。つまり、このタスクにはjasper.jarjasper-runtime.jarが必要です。これらはApache TomcatプロジェクトのTomcat 4/Catalinaのビルドに含まれており、将来のバージョンで必要になる可能性のあるその他のjarファイルも含まれています(変更されます)。

最も堅牢なバージョンのJasperとして、(2003年3月現在)Tomcatバージョン4.1.xをお勧めします。

このタスクには多くの制限があり、その一部はJasperの多くのバージョンに由来し、その他はタスクの実装上の「問題」(つまり、Jasperの回避策として大規模な部分を根本的に変更しようとする人の意欲の欠如)に由来します。このことと、JSPページが実装間、または実装のバージョン間で移植可能である必要がないという事実から、このタスクはデプロイ前のJSPページの検証に使用する方が、プリコンパイルするよりも適しています。後者については、デプロイ後にHttpUnit JUnitテストを実行してページをコンパイルしてテストすることで、一度にすべてを行うことができます。

パラメータ

このタスクには次の属性があります。

属性 説明 必須
destdir 生成されたファイルを配置する場所。指定されたパッケージ名に従ってここに配置されます。 はい
srcdir ソースJSPファイルを探す場所。 はい
verbose コンパイラに渡す詳細度を表す整数。 いいえ; デフォルトは0
package 生成されたJavaクラスの宛先パッケージ名。 いいえ
compiler JSPコンパイラアダプタのクラス名(例:jasperまたはjasper41)。 いいえ; デフォルトはjasper
ieplugin Internet Explorer用のJava Plugin classid。 いいえ
mapped (boolean) JSPの各HTML行に対して個別のwrite()呼び出しを生成します。 いいえ
classpath JSPコンパイラを実行するために使用するクラスパス。 いいえ、しかし使用するとより効果的に動作するようです。ネストされた要素classpathでも指定できます。
classpathref 参照classpathと同様です。 いいえ
failonerror コンパイルエラー時のアクションを制御するフラグ。 いいえ; デフォルトはyes
uribase JSP内の相対URI参照のコンテキスト。 いいえ; `uriroot`の宣言された値または導出された値に対するファイルの場所から導出されます。
uriroot URIを解決するルートディレクトリ。 いいえ
compiler 使用するJSPコンパイラアダプタのクラス名。 いいえ; Jasperの標準アダプタがデフォルトで使用されます。
compilerclasspath `compiler`属性で指定されたコンパイラアダプタを見つけるために使用されるクラスパス。 いいえ
webinc サーブレットをリストする`web.xml`の一部に対する出力ファイル名。 いいえ
webxml `web.xml`の生成されるファイル名。 いいえ

`mapped`オプションは、`true`に設定されている場合、JSPテキストコンテンツを1行につき1つの呼び出しの形式に分割します。マッピングされた書き込み呼び出しの上下には、JSPファイル内のどの行のテキストが由来するかを特定するためのコメントがあります。これにより、パフォーマンスがわずかに低下する可能性があります(ただし、線形複雑度で制限されます)。このオプションがない場合、隣接するすべての書き込みは単一の書き込みに連結されます。

`ieplugin`オプションは、<jsp:plugin>タグで使用されます。使用するJavaプラグインCOM Class-IDが変更された場合は、ここで指定できます。変更する必要はありません。

`uriroot`はWebアプリケーションのルートを指定します。すべての絶対URIはここから解決されます。指定されていない場合、最初のJSPページを使用して導出されます。導出するには、最初のJSPページの各親ディレクトリで`WEB-INF`ディレクトリが検索され、`WEB-INF`ディレクトリを持つJSPページに最も近いディレクトリが使用されます。見つからない場合、Jaspercが呼び出されたディレクトリが使用されます。これは、明示的に宣言されたJSPファイルから変換されたページ(タグライブラリへの参照を含む)にのみ影響します。

`uribase`は、JSPページ内の相対URI参照のコンテキストを確立するために使用されます。存在しない場合、`uriroot`の宣言された値または導出された値に対するファイルの場所から導出されます。これは、明示的に宣言されたJSPファイルから変換されたページにのみ影響します。

ネストされた要素として指定されたパラメータ

このタスクはjavacのようなディレクトリベースのタスクであるため、コンパイルする`.jsp`ファイルは`.java`ファイルのように配置されます。つまり、`includes`や`excludes`などの要素は、タスク宣言内で直接使用できます。

jspcタスクに固有の要素は次のとおりです。

classpath

JSPページをコンパイルするために使用するクラスパス。他のクラスパスと同様に指定します。

classpathref

既存のクラスパスへの参照。

webapp

Webアプリケーション全体をビルドするためのJasperへの指示。ベースディレクトリには、その下に`WEB-INF`サブディレクトリが必要です。使用されると、このタスクはすべての依存関係チェックをコンパイラに委譲します。

属性 説明 必須
basedir Webアプリケーションのベースディレクトリ。 はい

`src/war`の下にあるすべての`.jsp`ファイルを宛先`/gensrc`に、`com.i3sp.jsp`で始まるパッケージ階層にビルドします。

<jspc srcdir="${basedir}/src/war"
      destdir="${basedir}/gensrc"
      package="com.i3sp.jsp"
      compiler="jasper41"
      verbose="9">
  <include name="**/*.jsp"/>
</jspc>

`.jsp`ファイルから`.java`ファイルを生成し、次に`javac`を使用してバイトコードにコンパイルします。Javaコンパイルには`lib/taglibs.jar`を含めます。依存関係チェックを使用して、クラスの依存関係が示す場合に`.java`ファイルを削除します。

<jspc destdir="interim"
      verbose="1"
      srcdir="src"
      compiler="jasper41"
      package="com.i3sp.jsp">
  <include name="**/*.jsp"/>
</jspc>
<depend srcdir="interim"
         destdir="build"
         cache="build/dependencies"
         classpath="lib/taglibs.jar"/>
<javac srcdir="interim"
         destdir="build"
         classpath="lib/taglibs.jar"
         debug="on"/>

備考

`package`属性を使用すると、結果の`.java`ファイルを特定し、完全な依存関係チェックを実行できます。このタスクは、`.jsp`ファイルが変更された場合にのみ`.java`ファイルを再構築する必要があります。ただし、これはJasperの一部のバージョンでのみ機能します。デフォルトでは、`jasper`コンパイラを使用してTomcat 4.0.xをサポートするチェックが実行されます。Tomcat 4.1.xの依存関係チェックには、コンパイラを`jasper41`に設定します。機能する場合でも、`.tld`インポートまたはコンパイル時のインクルードの変更は検出されません。

JasperはJSP 1.2仕様に対してJSPページを生成します。Javaコードをコンパイルするには、クラスパスにサーブレット仕様のバージョン2.3のコピーが必要です。