Gradle / Grails 应用程序

Posted

技术标签:

【中文标题】Gradle / Grails 应用程序【英文标题】:Gradle / Grails application 【发布时间】:2012-08-15 04:08:24 【问题描述】:

几个小时以来,我一直在尝试配置 Gradle 来管理 Grails 项目,但没有成功。我在 Stack Overflow 和 Internet 上的其他地方找到的建议对我不起作用。

能否请您提供有关如何配置 Gradle+Grails 项目的最新说明?理想情况下,它应该与 Grails (2.1.0) 和 Gradle (1.1) 的当前版本相关。

【问题讨论】:

你试过这个吗:github.com/grails/grails-gradle-plugin 我已经尝试过它和 grails 1.3.5 前一段时间,它有很多错误,但现在处理 2.x 版本和起来。 【参考方案1】:

构建脚本

import org.grails.gradle.plugin.GrailsTask

buildscript 
        repositories 
            mavenCentral()
            mavenRepo name: "grails", url: 'http://repo.grails.org/grails/repo' 
        
        dependencies 
            classpath "org.grails:grails-gradle-plugin:1.1.1-SNAPSHOT"
        

repositories 
    mavenCentral()
    mavenRepo name: "grails", url: 'http://repo.grails.org/grails/repo' 

version = "1.0"
grailsVersion = "2.1.0"
apply plugin: "grails"
dependencies 
    ['dependencies', 'resources', 'core', 'hibernate', 'plugin-datasource', 'plugin-domain-class', 'plugin-tomcat', 'plugin-services'].each  plugin ->
        compile "org.grails:grails-$plugin:2.1.0"
    
    bootstrap "org.codehaus.groovy:groovy-all:1.8.6"


GRAILS_TASK_PREFIX = "grails-"
if (name.startsWith(GRAILS_TASK_PREFIX)) 
    project.task(name, type: GrailsTask) 
        command "$name - GRAILS_TASK_PREFIX"
    

初始化

然后就可以gradle init初始化项目结构了

命令

使用gradle grails-[grails script] 执行您的grails 命令。例如:gradle grails-run-app 等价于grails run-app

希望这会有所帮助!

更新

这似乎适用于 Grails 2.3.2:

buildscript 
        repositories 
            mavenCentral()
            maven  url 'http://repo.grails.org/grails/repo' 
        
        dependencies 
            classpath "org.grails:grails-gradle-plugin:2.0.0-SNAPSHOT"
        

repositories 
    mavenCentral()
    maven  url 'http://repo.grails.org/grails/repo'  

version = "1.0"
apply plugin: "grails"
apply plugin: 'idea'
grails 
  grailsVersion = "2.3.2"

dependencies 
    ['dependencies', 'core', 'spring', 'web', 'plugin-datasource', 'plugin-domain-class', 'plugin-controllers', 'plugin-services'].each  plugin ->
        compile "org.grails:grails-$plugin:2.3.2"
    
    compile 'org.grails.plugins:tomcat:7.0.42'
    compile 'org.grails.plugins:hibernate:3.6.10.3'
    compile 'com.h2database:h2:1.3.173'
    bootstrap "org.codehaus.groovy:groovy-all:2.1.9"

注意,生成 Grails 包装器时会引发异常,但 gradle init 似乎在其他情况下正确初始化项目结构。而且,gradle grails-run-app 似乎也可以正常工作。

【讨论】:

这对我来说失败了。当我将引导程序“org.codehaus.groovy:groovy-all:1.8.7”更改为 1.8.6 时,它可以工作... 这似乎不适用于带有 gradle grails-create-domain-class x.y.Z 等参数的 grails 命令 @C.Ross, gradle grails-create-domain-class -PgrailsArgs=mydomain.Person 这对于 Grails 插件是否也适用?我一直在尝试将它用于 liquibase 迁移插件,例如但./gradlew grails-dbm-list-locks 回复Task 'grails-dbm-list-locks' not found in root project 'aps-metrics'.

以上是关于Gradle / Grails 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Gradle 会降级 Grails 3.1 应用程序中的传递依赖项?

如何在 Grails 3 Gradle 项目中控制 H2 驱动程序版本?

GRAILS ---命令 grails war 和 gradle build 有啥区别?

使用“gradle test”测试 Grails 3 应用程序使用错误的环境配置

Grails/Gradle 测试在非本地 CI 上失败

初始化类路径时出错:找不到与 services.gradle.org 匹配的主题备用 DNS 名称。 -> 运行 grails 3.0.1 应用程序时