Skip to content

The superclassName property in doma-codegen-plugin fails to resolve classes within the project #306

@tomo-yamaguchi-cre

Description

@tomo-yamaguchi-cre

お世話になっております。
Ant ベースの doma-gen から Gradle の doma-codegen-plugin への移行を進めているのですが、superclassName にプロジェクト内で定義したクラスを指定した際に ClassNotFoundException が発生する事象がありましたので、報告させていただきます。

事象

エンティティ生成時に superclassName へプロジェクト内のスーパークラス(例: base.AbstractEntity)を指定すると、以下のエラーとなりコード生成が失敗します。

[DOMAGEN0013] The class "base.AbstractEntity" to which the parameter
"superclassName" refers is not found.
java.lang.ClassNotFoundException: base.AbstractEntity

コード生成タスクの ClassLoader にプロジェクトのビルド出力が含まれていないことが原因と思われます。

やりたいこと

監査カラム等の共通フィールドをスーパークラスにまとめ、生成されるエンティティがそれを継承する形にしたいと考えています。旧 doma-gen(Ant)ではクラスパス指定で実現できていたため、doma-codegen-plugin でも同様のことができると助かります。

参考

本件について PR #294 にて修正案を作成してみました。domaCodeGen 構成のクラスパスから ClassLoader を組み立ててコード生成タスクに渡す形としており、ClassLoader を明示的に設定しない場合は従来の動作のままとなるようにしています。
アプローチとして方向性が違うようでしたらご指摘いただければ修正いたしますので、お手すきの際にご確認いただけると幸いです。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions