本系列的2、3部分对参考文档第3章的配置基础、环境和日志配置部分进行了快速扫描,在这一篇中,让我们完成第3章的剩余部分。
GORM无疑是Grails中的亮点,在第3章中关于它的配置选项有2个:
1. grails.gorm.failOnError,save过程的验证失败将抛出异常。以下是它的配置方法:
  • 应用于所有Domain Class:grails.gorm.failOnError=true
  • 应用于指定Domain Class:grails.gorm.failOnError = [包名1, 包名2]
2. grails.gorm.autoFlush,如果为true,在save、merge和delete时就会对session进行flush。
GORM虽然不错,但要是不配置数据源的话,那也是空有一身好武艺。Grails应用中的数据源配置是发生在DataSource.groovy中的,好在Grails缺省已经做了大部分的工作,因此大多数时候我们需要改动的也就是:驱动名、数据库URL、用户名、密码等。参考文档中列出了配置常用的参数,在此就不一一列出,只单独提一下logSql。这个参数是你在调试最有可能用到的,它的作用是打印Hibernate产生的SQL。
有时候,你可能想把数据源配置成JNDI,对此Grails也可以很容易的与之配合,配置很简单,在数据源中直接引用JNDI名即可:
dataSource {
        jndiName = "java:comp/env/myDataSource"
    }
对于数据库模式的创建选项,dbCreate,使用缺省的配置可以满足大多数情况。但如果你有遗留数据库时需小心。此外,Grails目前不支持Rails风格的数据迁移,但已有两个插件支持类似的功能: build,构建系统的依赖 compile,编译期所需依赖 runtime,运行期所需依赖 test,测试期所需依赖 provided,部署期(非War部署期)所需依赖 方式1,范围 "group:name:version"。如:runtime 'com.mysql:mysql-connector-java:5.1.5' 方式2,范围 group:"...", name:"…",version:"…"。如runtime group:'com.mysql', name:'mysql-connector-java', version:'5.1.5'

runtime 'com.mysql:mysql-connector-java:5.1.5',
     'net.sf.ehcache:ehcache:1.6.1'
    
    runtime(
          [group:'com.mysql', name:'mysql-connector-java', version:'5.1.5'],
          [group:'net.sf.ehcache', name:'ehcache', version:'1.6.1']
    )
Maven,mavenCentral() SpringSource,ebr() 某个Maven库:mavenRepo "url" 自定义:resolver new URLResolver(...)
 

repositories {        
        grailsPlugins()
        grailsHome()
        // uncomment the below to enable remote dependency resolution
        // from public Maven repositories
        //mavenLocal()
        //mavenCentral()
        //mavenRepo "http://snapshots.repository.codehaus.org"
        //mavenRepo "http://repository.codehaus.org"
        //mavenRepo "http://download.java.net/maven/2/"
        //mavenRepo "http://repository.jboss.com/maven2/"
    }

credentials {
     realm = ".."
     host = "localhost"
     username = "myuser"
     password = "mypass"
    }

grails.project.ivy.authentication={ 
        credentials{
            ...
        } 
    }
网络管理员 还可以利用本地的文件系统作为依赖库:flatDir name:'myRepo', dirs:'path'。

inherits("global") {
     excludes "oscache", "ehcache"
    }
产生整体报告:grails dependency-report 产生阶段相关的报告:grails dependency-report 阶段名,如grails dependency-report runtime。

compile( 'org.hibernate:hibernate-core:3.3.1.GA') {
 exported = false
}

plugin("hibernate") {
    compile( 'org.hibernate:hibernate-core:3.3.1.GA') {
           excludes 'ehcache', 'xml-apis', 'commons-logging'
    }
    compile 'org.hibernate:hibernate-annotations:3.4.0.GA',
           'org.hibernate:hibernate-commons-annotations:3.3.0.ga'
    runtime 'javassist:javassist:3.4.GA' 
}