【问题标题】:Grails plugin version incompatibility warningGrails 插件版本不兼容警告
【发布时间】:2023-12-07 03:53:01
【问题描述】:

根据Grails official documentation,如果我在插件上定义以下 grailsVersion

def grailsVersion = "3.3.10 > *"

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

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

grailsVersion - 插件支持的 Grails 版本范围。 例如。 "1.2 > *"(表示1.2或更高)

但是我无法理解以下日志

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 时发生了一些奇怪的事情

【问题讨论】:

  • 您是通过 IDE 执行此操作吗?也许您的 IDE 安装版本和您本地的 Grails 版本不同。尝试从 shell 和 IDE 控制台执行“grails -version”。看看它们是否相同
  • 我从控制台本身运行了上述内容。 @erichelgeson 得到了答案:)

标签: grails groovy semantic-versioning


【解决方案1】:

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

它还解释了为什么 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 上打开一个带有详细信息的问题,或者更好地打开一个 PR 来修复。

【讨论】:

  • 我会尝试用 PR 来修补它!非常感谢这个宝贵的提示!