テンプレート言語: Velocity と FreeMarker
IntelliJ IDEA を使用すると、 Velocity(英語) (VTL) および FreeMarker(英語) (FTL) でテンプレートを開発できます。
コーディング支援は、デフォルトで Ultimate サブスクリプション付きの IntelliJ IDEA にバンドルされ、有効化されている Apache Velocity と FreeMarker プラグインに依存しています。 関連機能が利用できない場合は、プラグインを無効化していないことを確認してください。 詳細については、 プラグイン設定を開く を参照してください。


デフォルトでサポートされているファイルタイプは次のとおりです。
VTL | .ft 、 .vm 、 .vsl |
FTL | .ftl 、 .ftlh 、 .ftlx |
テンプレートの静的部分が記述されている言語(テンプレートデータ言語と呼ばれる)のコーディング支援を有効にするには、次のいずれかを実行します。
テンプレートデータ言語をプロジェクト内のファイルやフォルダーに関連付ける
設定 ダイアログ (Ctrl+Alt+S) で、 言語およびフレームワーク をクリックし、次に テンプレートデータ言語 をクリックします。
プロジェクトの右側のテンプレートデータ言語セルまたは対応するディレクトリまたはファイルをクリックし、言語を選択します。
変更を適用するには、 OK をクリックします。
個々のテンプレートファイルは、 テンプレートデータ言語を次のように変更する コンテキストメニューコマンドを使用して、エディターでテンプレートデータ言語を直接割り当てることができます。
対応するファイルタイプの拡張パターンを追加する
設定 ダイアログ (Ctrl+Alt+S) で、 エディター をクリックし、次に ファイルタイプ をクリックします。
認識されたファイルタイプ で、 FreeMarker テンプレート または Velocity テンプレート を選択します。
ファイル名のパターン で、
をクリックします。
ワイルドカードの追加 ダイアログで、ファイル名の拡張パターンを指定し、言語を選択して、 OK をクリックします。

変更を適用するには、 OK をクリックします。
未解決の参照の修正
IntelliJ IDEA は提供 インスペクションをテンプレート言語に未解決の参照を検出するために:

未解決の参照は、 インテンションアクションを使用して修正できます。 同じファイルにコメントを追加するか、コメントを含む別のファイルを作成するかを選択できます。 詳細については、 特別なコメントを参照してください。

後者の場合、デフォルト名 velocity_implicit.vm または freemarker_implicit.ftl のファイルが作成されます。 このファイルは次のコメントで始まります:
参照タイプを定義するためのコード補完はコメントファイルで利用できます。
ファイルの名前を変更するか、ソースルート内の別の場所に移動すると、参照定義は失われません。
特別なコメント
IntelliJ IDEA には、テンプレート言語を使用するための次の特別なコメントが用意されています。
FreeMarker のコメントは、 <#-- と --> 、または [#-- と --#] のいずれかを使用して区切られます。
コメント | 説明 |
|---|---|
| このコメントで始まる FreeMarker ファイルは、同じモジュールまたはその依存関係にあるすべてのファイルに含まれます。 このような専用のコメントファイルを使用して IDE 固有のコメントを定義し、テンプレートファイルを汚さないようにします。 |
| 変数を定義します。 例えば、次のコメントは <#-- @ftlvariable name="foo" type="java.lang.String" file="path/to/file" -->
この場合、 |
|
<#-- @ftlroot "path/to.jar!/path/inside/jar" -->
|
Velocity コメントは、 #* と *# を使用して区切られています。
コメント | 説明 |
|---|---|
| このコメントで始まる Velocity ファイルは、同じモジュール内のすべてのファイルに含まれます。 このような専用のコメントファイルを使用して IDE 固有のコメントを定義し、テンプレートファイルを汚さないようにします。 |
| 変数を定義します。 例えば、次のコメントは #* @vtlvariable name="foo" type="java.lang.String" file="path/to/file" *#
この場合、 |
| このコメントを持つファイルに関連するテンプレートマクロを含むファイルを定義します。 例: 次のコメントは、 #* @vtlmacrolibrary path="lib.vm" file="file.vm" *#
|
| このコメントを持つファイルとの相対的な velocity.properties ファイルとランタイムルートディレクトリを定義します。 例: #* @velocityproperties path=”path/to/velocity.properties” runtime_root=”path/to/runtime/root/dir” *#
|