build
(1.3.7)中runtime
,compile
和BuildConfig.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")
}
}
答案 0 :(得分:98)
build
- 构建过程仅需要的依赖runtime
- 运行应用程序所需的依赖关系,但不能编译它,例如特定数据库供应商的JDBC实现。这通常不需要在编译时,因为代码仅依赖于JDBC API,而不是其特定的实现compile
- 编译时和运行时都需要的依赖关系。这是最常见的情况还有其他一些依赖范围:
test
- 只有测试所需的依赖关系,例如模拟/测试库provided
- 编译时需要的依赖项,但不应与应用程序打包在一起(通常是因为它是由容器提供的)。一个例子是Servlet API 答案 1 :(得分:5)
以前的2个答案似乎与编译和构建之间的区别发生冲突。我认为构建是包含grails compile
和grails run-app
的范围,而编译只是前者。
答案 2 :(得分:1)
一对grails命令有助于说明差异。考虑grails run-app
和grails compile
。 grails compile
是编译步骤,将包含编译时依赖项。 grails run-app
是运行步骤,将包含运行时依赖项。构建依赖项是运行任何这些命令所需的任何内容,例如,挂钩到某些构建事件的自定义脚本。
因此,当您需要确定包含依赖项时,您会选择最合适的那个。