MyBatis Generator не может создать экземпляр пользовательского класса плагина - PullRequest
0 голосов
/ 06 октября 2019

Я использую MyBatis Generator в проекте Spring Boot 2.1.9 + Gradle для генерации классов сущностей и классов сопоставления из БД PostgreSQL.
Я добавил несколько плагинов для генерации аннотаций и оптимистической блокировки.

Я использую этот плагин MyBatis Generator Gradle.
https://github.com/kimichen13/mybatis-generator-plugin

Я использую этот плагин для создания аннотаций и оптимистической блокировки.
https://github.com/itfsw/mybatis-generator-plugin#17-%E4%B9%90%E8%A7%82%E9%94%81%E6%8F%92%E4%BB%B6

Кроме того, я хотел быреализовать пользовательский плагин генератора.

Мой вопрос:
Когда я выполняю задачу Gradle (./gradlew mbGenerator), произошла ошибка, которая показывает «Не удается создать экземпляр объекта типа com.example.demo». .plugin.MyCustomPlugin "(← Имя моего пользовательского плагина)

При удалении строки:

<!-- My Custom Plugin -->
<plugin type="com.example.demo.plugin.MyCustomPlugin"/>

в приведенном ниже файле generatorConfig.xml генератор работает правильно.

Что мне делать?

Мой build.gradle такой, как показано ниже.

plugins {
    id 'org.springframework.boot' version '2.1.9.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
    id "com.thinkimi.gradle.MybatisGenerator" version "2.1.2"

}

group = 'com.example'
version = '0.0.1'
sourceCompatibility = '11'

mybatisGenerator {
    verbose = true
    configFile = "src/main/resources/generatorConfig.xml"

    dependencies {
        mybatisGenerator project(':')
        mybatisGenerator 'com.itfsw:mybatis-generator-plugin:1.3.7'
        mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.7'
    }
}

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
    compileOnly {
        extendsFrom annotationProcessor
    }
    mybatisGenerator
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.0'
    implementation  'org.mybatis.generator:mybatis-generator-core:1.3.7'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'org.postgresql:postgresql'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testCompile("org.mybatis.spring.boot:mybatis-spring-boot-starter-test:2.1.0")
}

Мой generatorConfig.xml такой, как показано ниже.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration >


    <context id="context1" >
        <!-- plugin to generate optimistic lock -->
        <plugin type="com.itfsw.mybatis.generator.plugins.OptimisticLockerPlugin">
            <property name="customizedNextVersion" value="false"/>
        </plugin>
        <plugin type="com.itfsw.mybatis.generator.plugins.LombokPlugin">
            <property name="@Data" value="true"/>
            <property name="@Builder" value="false"/>
            <property name="@AllArgsConstructor" value="false"/>
            <property name="@NoArgsConstructor" value="false"/>
            <property name="@Accessors(chain = true)" value="false"/>
            <property name="supportSuperBuilderForIdea" value="false"/>
        </plugin>

        <!-- plugin to generate annotation -->
        <plugin type="com.itfsw.mybatis.generator.plugins.MapperAnnotationPlugin">
            <property name="@Mapper" value="true"/>
            <property name="@Repository" value="true"/>
        </plugin>

        <!-- My Custom Plugin -->
        <plugin type="com.example.demo.plugin.MyCustomPlugin"/>

        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="org.postgresql.Driver" connectionURL="jdbc:postgresql://localhost:5432/ec" userId="postgres" password="" />

        <javaModelGenerator targetPackage="com.example.demo" targetProject="src/main/java"/>
        <sqlMapGenerator targetPackage="com.example.demo" targetProject="src/main/resources"/>
        <javaClientGenerator targetPackage="com.example.demo" targetProject="src/main/java"
                            type="MIXEDMAPPER"/>

        <table schema="public" tableName="product" >
            <property name="useActualColumnNames" value="true" />
            <property name="customizedNextVersion" value="false"/>
            <property name="versionColumn" value="version"/>
        </table>
    </context>

</generatorConfiguration>

Мой пользовательский плагин JavaФайл класса, как показано ниже.

package com.example.demo.plugin;

import org.mybatis.generator.api.PluginAdapter;

import java.util.List;

public class MyCustomPlugin extends PluginAdapter {

    @Override
    public boolean validate(List<String> warnings) {
        return true;
    }

    // TODO do something
}
...