在 BuildConfig 中定义数据库迁移插件时出错

Posted

技术标签:

【中文标题】在 BuildConfig 中定义数据库迁移插件时出错【英文标题】:errors when database-migration plugin is defined in BuildConfig 【发布时间】:2013-01-29 09:36:02 【问题描述】:

我尝试遵循建议的良好做法并将插件放在 BuildConfig.groovy 而不是 application.properties 中,但不适用于数据库迁移。我尝试使用compilebuildruntime 的范围来定义它。当我运行 grails refresh-dependencies 时,我收到以下错误消息:

错误警告:指定的依赖定义运行时(数据库迁移:1.3.2)无效!跳过..

(当然,消息中的范围随指定的范围而异)。我应该使用另一个范围,还是这个插件在某种程度上是特殊的?很遗憾,该消息没有说明哪些范围是有效的 - 这样我就不必问这个问题了:-)

我只想使用IDE中的插件来生成xml文件,所以我想把它从war文件中排除。 'export=false' 是否表示,如果所需范围默认包含它?

我不得不承认,我找不到对各种范围的明确定义,什么范围包括什么。有人可以指点我吗?

我应该补充一点,这是 Grails 2.1.1 和 GGTS 3.1。

【问题讨论】:

您在 BuildConfig 中究竟添加了什么,在哪里?插件依赖项看起来像 runtime(':database-migration:1.3.2')(注意前导冒号),需要放在 plugins 块中,而不是 dependencies 块中。 这是范围的good summary。 来自我的 BuildConfig.groovy: plugins build(":tomcat:$grailsVersion", ":release:2.0.3", ":rest-client-builder:1.0.2") export = false runtime "database-migration:1.3.2" 'build' 条目是在我将项目创建为插件时生成的。 @uchamp 感谢您的链接。我会做书签。虽然我无法确定是否存在意味着“将其用于命令,但排除在战争之外”的范围。 【参考方案1】:

我刚刚发现了我的错误。我没有注意到插件名称前有一个冒号。我有:

runtime("database-migration:1.3.2")

我应该写的是:

runtime(":database-migration:1.3.2")

'Duh!' 的组合多么奇怪的语法,每个术语前都需要一个冒号。哦,原来如此。让我想起了黑暗时代的一位客户,当时一群人正在研究一个行为不端的 Cobol 程序,但没有人知道原因。尽管我几乎不认识 Cobol,但我还是偷看了一眼。我突然指出,在“if”语句之后和“else”之前缺少句号。至少一个冒号有两个句号,所以我可能不得不承认我的视力不是原来的样子......

【讨论】:

以上是关于在 BuildConfig 中定义数据库迁移插件时出错的主要内容,如果未能解决你的问题,请参考以下文章

BuildConfig.groovy Grails 2.2.3 中的自定义插件传递依赖解析

Grails 2.2.1 无法识别从 BuildConfig.groovy 安装的“发布”插件

当 Grails BuildConfig 范围没有指定组织时会发生啥?

Android Gradle 插件gradle.properties 中配置编译参数并在 Java 代码 BuildConfig 中调用该参数

Grails项目BuildConfig.groovy Tomcat插件版本?

如何在wordpress中进行数据库迁移?