Grails 插件版本不兼容警告

Grails plugin version incompatibility warning

根据 Grails official documentation,如果我在插件

上定义以下 grailsVersion
def grailsVersion = "3.3.10 > *"

这意味着安装此插件的 grails 应用程序至少应为 3.3.10。

我根据同一官方文档上的声明承认这一点:

grailsVersion - The version range of Grails that the plugin supports. eg. "1.2 > *" (indicating 1.2 or higher)

但是我无法理解以下日志

2019-10-22 15:11:16.834 +0200 WARN  (ain) [ins.DefaultGrailsPluginManager] Plugin [myplugin:0.1.0-rc3] may not be compatible with this application as the application Grails version is less than the plugin requires. Plugin is compatible with Grails version 3.3.10 > * but app is 4.0.0

另一个奇怪的是,如果我使用

def grailsVersion = "3.0.0 > *"

然后就没有警告了...这与 grails doc 是内联的。

所以要么我误解了,要么在使用 grailsVersion=3.3.10 时发生了奇怪的事情

原因是 DefaultGrailsPluginManager 以非常简单的方式转换 grails 版本,在这种情况下失败了——grailsVersion 被转换为 3310400(剥离.'s) - 400 < 3310

它还解释了为什么 3.0.0 有效(3.3.0 -> 300)。 400 > 300

你可以在这里看到逻辑 https://github.com/grails/grails-core/blob/master/grails-core/src/main/groovy/grails/plugins/DefaultGrailsPluginManager.java#L378

这里是版本号的字符串 - https://github.com/grails/grails-core/blob/master/grails-core/src/main/groovy/grails/plugins/DefaultGrailsPluginManager.java#L421

我会在 grails-core 上开一个 issue 来提供详细信息,或者最好开一个 PR 来修复。