アノテーション処理
Doma はコンパイル時に `Pluggable Annotation Processing API を使用します。
このドキュメントでは、Doma のアノテーションプロセッサの利用可能なオプションを説明し、それらをさまざまなビルドツールで設定する方法を示します。
オプション
doma.dao.package
生成された @Dao アノテーションが付いたインタフェースの実装クラスが属するパッケージ。指定された値は、doma.dao.subpackage の値をオーバーライドします。デフォルト値は、 @Dao アノテーションが付けられたインタフェースが属するパッケージと同じパッケージです。
doma.dao.subpackage
@Dao アノテーションが付けられたインタフェースの生成された実装クラスが属するサブパッケージ。指定された値は、doma.dao.package の値によってオーバーライドされます。この値が impl で、 @Dao アノテーションが付けられたインタフェースのパッケージが example.dao である場合、生成された実装クラスはパッケージ example.dao.impl に属します。
doma.dao.suffix
@Dao アノテーションが付けられたインタフェースの生成された実装クラスの名前の接尾辞です。たとえば、この値が Bean に設定され、@Dao アノテーションが付けられたインタフェースの単純名が EmployeeDao である場合、生成される実装クラスの単純名は EmployeeDaoBean になります。デフォルト値は Impl です。
doma.debug
アノテーション処理中にデバッグログを出力するかどうかを制御します。true に設定すると、アノテーションプロセッサはデバッグログを出力します。デフォルト値は false です。
doma.domain.converters
@DomainConverters の注釈が付けられたクラスの完全修飾名。名前はカンマ区切りのリストとして記述されます。この値は、外部ドメイン クラスを検索するために使用されます。
doma.entity.field.prefix
生成されたエンティティメタクラスのフィールドに付けられる名前プレフィックス。値 none は、プレフィックスが使用されないことを意味します。デフォルト値は $ です。
doma.expr.functions
org.seasar.doma.expr.ExpressionFunctions を実装するクラスの完全修飾名。デフォルト値は org.seasar.doma.expr.ExpressionFunctions です。このオプションは、SQLディレクティブ内で使用可能な関数を決定します。
doma.metamodel.enabled
Criteria API のメタクラスを生成するかどうか。値が true の場合、たとえ metamodel = @Metamodel で指定されていなくても、すべてのエンティティクラスに対してメタモデルが生成されます。デフォルト値は false です。
doma.metamodel.prefix
Criteria API のメタモデル クラスの名前接頭辞。デフォルト値は空の文字列です。
doma.metamodel.suffix
Criteria API のメタモデル クラス名の接尾辞。デフォルト値は _ です。
doma.resources.dir
doma.compile.config ファイルや SQL ファイルなどのリソース ファイルが含まれているリソースディレクトリ。 このオプションを絶対パスとして指定します。 指定しない場合、リソース ディレクトリはクラスが生成されるのと同じディレクトリです。
doma.resources.dirs
SQL ファイルの追加のリソースディレクトリです。1 つ以上の絶対パスをカンマ区切りで指定します。doma.resources.dir と doma.resources.dirs の両方が指定された場合、Doma はまず doma.resources.dir を検索し、その後 doma.resources.dirs の各ディレクトリを順に検索します。最初に見つかった一致を返します。
doma.sql.validation
SQL ファイルの存在と SQL ディレクティブの文法を検証するかどうかを制御します。true に設定すると、検証が実行されます。検証を無効にするには、false に設定します。 デフォルト値は true です。
doma.trace
アノテーション処理中にトレースログを出力するかどうかを制御します。true に設定すると、アノテーションプロセッサはトレースログを出力し、アノテーション処理の実行時間も含まれます。デフォルト値は false です。
doma.version.validation
ランタイムとコンパイル時の間のバージョン互換性を検証するかどうかを制御します。true に設定すると、バージョン検証が実行されます。検証を無効にするには、false に設定します。デフォルト値は true です。
doma.config.path
Doma の構成ファイルのファイル パス。デフォルト値は doma.compile.config です。
Gradle でのオプションの設定
compilerArgs プロパティ を使用します。
tasks {
compileJava {
options.compilerArgs.addAll(listOf("-Adoma.dao.subpackage=impl", "-Adoma.dao.suffix=Impl"))
}
}
compileJava {
options {
compilerArgs = ['-Adoma.dao.subpackage=impl', '-Adoma.dao.suffix=Impl']
}
}
Maven でのオプションの設定
compilerArgs パラメータ: を使用します。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source> <!-- depending on your project -->
<target>17</target> <!-- depending on your project -->
<annotationProcessorPaths>
<path>
<groupId>org.seasar.doma</groupId>
<artifactId>doma-processor</artifactId>
<version>${doma.version}</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>-Adoma.resources.dir=${project.basedir}/src/main/resources</arg>
<arg>-Adoma.dao.subpackage=impl</arg>
<arg>-Adoma.dao.suffix=Impl</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
Eclipse でのオプションの設定
Gradle
Gradle プラグイン com.diffplug.eclipse.apt と processorArgs プロパティを使用します。
plugins {
id("com.diffplug.eclipse.apt") version "4.4.1"
}
tasks {
compileJava {
val aptOptions = extensions.getByType<com.diffplug.gradle.eclipse.apt.AptPlugin.AptOptions>()
aptOptions.processorArgs = mapOf(
"doma.dao.subpackage" to "impl",
"doma.dao.suffix" to "Impl"
)
}
}
plugins {
id 'com.diffplug.eclipse.apt' version '4.4.1'
}
compileJava {
aptOptions {
processorArgs = [
'doma.dao.subpackage' : 'impl', 'doma.dao.suffix' : 'Impl'
]
}
}
Eclipse でプロジェクトを右クリックし、Gradle > Refresh Gradle Project を選択します。これにより Gradle に指定したアノテーションプロセッサのオプションが Eclipse へ反映されます。
Maven
Eclipseでプロジェクトを右クリックし、Maven > Update Project...を選択します。これにより、Mavenのアノテーション処理オプションがEclipseに適用されます。
IntelliJ IDEA でのオプションの設定
Gradle
Gradle プロジェクトとしてプロジェクトをインポートします。この場合、build.gradle(.kts) に書かれたオプションが使用されます。
Maven
プロジェクトを Maven プロジェクトとしてインポートします。この場合、pom.xml に書かれたオプションが使用されます。
設定ファイルによるオプションの設定
doma.compile.config ファイルで指定されたオプションは、Eclipse、IntelliJ IDEA、Gradle、Maven などのすべてのビルド ツールで使用できます。
doma.compile.config ファイルはプロパティファイル形式に従い、src/main/resources などのルート ディレクトリに配置する必要があります。
注釈
doma.compile.config ファイルで指定されたオプションは、ビルドツールに固有のオプションによって上書きされます。