当前使用版本(必填,否则不予处理)

v3.3.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

gradle插件使用代码生成,配置superEntityClass,提示找不到class

重现步骤(如果有就写完整)

你好,这个一个很优秀的工具库,我们项目中使用的是gradle而非maven,我们做了gradle的插件,插件中集成了代码生成功能,原先3.0.x版本的时候,是可以的,最近升级到3.3.2,发现使用了superEntityClass,提示找不到class。

因为gradle插件的运行机制和普通代码运行机制不一样,所以可能会导致classload中无法找到entity的父类,是否可以提供方法屏蔽下。

StrategyConfig.java

    /**
     * 设置实体父类
     *
     * @param superEntityClass 类全名称
     * @return this
     * @deprecated 3.3.2 {@link #setSuperEntityClass(Class)}
     */
    @Deprecated
    public StrategyConfig setSuperEntityClass(String superEntityClass) {
        return setSuperEntityClass(ClassUtils.toClassConfident(superEntityClass));
    }

报错信息

gradle插件使用代码生成,配置superEntityClass,提示找不到class

Comment From: LiushuiXiaoxia

Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: 找不到指定的class!请仅在明确确定会有 class 的时候,调用该方法
    at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39)
    at com.baomidou.mybatisplus.core.toolkit.ClassUtils.toClassConfident(ClassUtils.java:152)
    at com.baomidou.mybatisplus.generator.config.StrategyConfig.setSuperEntityClass(StrategyConfig.java:289)
    at com.baomidou.mybatisplus.generator.config.StrategyConfig_Decorated.setSuperEntityClass(Unknown Source)
    at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:479)
    at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.setProperty(BeanDynamicObject.java:358)
    at org.gradle.internal.metaobject.BeanDynamicObject.trySetProperty(BeanDynamicObject.java:176)
    at org.gradle.internal.metaobject.CompositeDynamicObject.trySetProperty(CompositeDynamicObject.java:66)
    at org.gradle.internal.metaobject.ConfigureDelegate.setProperty(ConfigureDelegate.java:95)

Comment From: LiushuiXiaoxia

https://github.com/LiushuiXiaoxia/mybatis-plus-gradle-generator

Comment From: nieqiurong

你需要在你的mpg.gradle中声明buildscript中传递你的基础模块,但并不支持项目依赖,详情请参考文档。https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies

Comment From: LiushuiXiaoxia

你需要在你的mpg.gradle中声明buildscript中传递你的基础模块,但并不支持项目依赖,详情请参考文档。https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies

第一步我知道的,不过我们项目中都是dto共享,每次发布成snapshot版本,供其他项目使用,所以我们的dto和spring boot项目是分开的,这样就有2个项目了,所以就有了项目依赖问题。

Comment From: LiushuiXiaoxia

临时的解决方法是这样的,还是希望可以有方法可以屏蔽下。

package cn.mycommons.mpg.pojo

import com.baomidou.mybatisplus.generator.config.StrategyConfig

/**
 * StrategyConfig2 <br/>
 * Created by xiaqiulei on 2020-05-30.
 */
class MyStrategyConfig extends StrategyConfig {

    private String superEntityClass2

    MyStrategyConfig() {
    }

    @Override
    StrategyConfig setSuperEntityClass(String superEntityClass) {
        superEntityClass2 = superEntityClass
        return this
    }

    @Override
    String getSuperEntityClass() {
        return superEntityClass2
    }
}

Comment From: LiushuiXiaoxia

感谢大佬