在 BuildConfig 中定义数据库迁移插件时出错
Posted
技术标签:
【中文标题】在 BuildConfig 中定义数据库迁移插件时出错【英文标题】:errors when database-migration plugin is defined in BuildConfig 【发布时间】:2013-01-29 09:36:02 【问题描述】:我尝试遵循建议的良好做法并将插件放在 BuildConfig.groovy
而不是 application.properties
中,但不适用于数据库迁移。我尝试使用compile
、build
和runtime
的范围来定义它。当我运行 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 中调用该参数