Grails 3:如何禁用插件但保留JAR包中的类?
在Grails 3中禁用插件、仅保留依赖类的方法
当然有办法啦!Grails 3基于Gradle构建,我们可以通过以下几种方式实现只引入依赖中的类、禁用插件的自动加载与初始化:
1. 在Gradle配置中直接排除插件加载
如果你的依赖是一个标准的Grails插件(比如命名为grails-plugin-xxx的包),Grails默认会自动识别并加载它的插件逻辑。我们可以在build.gradle的grails配置块中明确排除该插件:
grails { plugins { exclude 'your-plugin-name' } }
这里的your-plugin-name是插件的官方名称(比如spring-security-core),配置后Grails就不会执行该插件的任何初始化逻辑,只会将依赖中的普通类引入项目。
2. 针对特定插件禁用其功能
如果需要更精细地控制,也可以在项目的配置文件(application.yml或application.groovy)中直接禁用指定插件:
使用application.yml的示例:
grails: plugins: yourPluginName: enabled: false
使用application.groovy的示例:
grails.plugins.yourPluginName.enabled = false
这种方式同样会阻止插件的初始化流程,只保留依赖中的类供你直接调用。
3. 调整依赖引入的范围(可选)
如果你的依赖同时包含插件代码和普通工具类,还可以通过Gradle的依赖配置,排除不需要的插件模块:
implementation('com.example:your-dependency:1.0.0') { exclude module: 'unwanted-plugin-module' }
不过通常前两种方法已经足够解决问题,这个可以作为补充方案。
这样操作后,你就能完全使用依赖中的类,而不会触发任何Grails插件的功能逻辑啦。
内容的提问来源于stack exchange,提问作者Miguel Ping




