アノテーション処理

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.dirdoma.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.aptprocessorArgs プロパティを使用します。

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 ファイルで指定されたオプションは、ビルドツールに固有のオプションによって上書きされます。