Grails BuildConfig.groovy,构建,编译和运行时之间的区别?

时间:2012-01-05 23:37:33

标签: grails build compilation config

build(1.3.7)中runtimecompileBuildConfig.groovy之间的区别是什么

grails.project.dependency.resolution = {

    plugins {
        build "acme:acme-cache:latest.integration"
    }

    dependencies {
        build "com.foo.bar:foobar:1.0.5"       
        runtime "org.apache.httpcomponents:httpclient:4.0.3"
        compile("com.thoughtworks.xstream:xstream:1.3.1")
    }
}

3 个答案:

答案 0 :(得分:98)

  • build - 构建过程仅需要的依赖
  • runtime - 运行应用程序所需的依赖关系,但不能编译它,例如特定数据库供应商的JDBC实现。这通常不需要在编译时,因为代码仅依赖于JDBC API,而不是其特定的实现
  • compile - 编译时和运行时都需要的依赖关系。这是最常见的情况

还有其他一些依赖范围:

  • test - 只有测试所需的依赖关系,例如模拟/测试库
  • provided - 编译时需要的依赖项,但不应与应用程序打包在一起(通常是因为它是由容器提供的)。一个例子是Servlet API

答案 1 :(得分:5)

以前的2个答案似乎与编译和构建之间的区别发生冲突。我认为构建是包含grails compilegrails run-app的范围,而编译只是前者。

答案 2 :(得分:1)

一对grails命令有助于说明差异。考虑grails run-appgrails compilegrails compile是编译步骤,将包含编译时依赖项。 grails run-app是运行步骤,将包含运行时依赖项。构建依赖项是运行任何这些命令所需的任何内容,例如,挂钩到某些构建事件的自定义脚本。

因此,当您需要确定包含依赖项时,您会选择最合适的那个。