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

BuildConfig.groovy (1.3.7)中buildruntimecompile什么区别?

 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") } } 
  • build – 依赖,只有构build过程需要
  • runtime – 运行应用程序所需的依赖性,但不编译它,例如特定数据库供应商的JDBC实现。 这在编译时通常不需要,因为代码只依赖于JDBC API,而不是特定的实现
  • 在编译时和运行时都需要compile依赖。 这是最常见的情况

还有一些其他的依赖范围:

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

看来以前的两个答案在编译和编译的区别上是冲突的。 我认为build是包含grails compilegrails run-app ,而compile只是前者。

从Grails 3开始,依赖由Gradlepipe理。 grails-app/conf/BuildConfig.groovy文件已被项目根目录下的build.gradle文件replace 。

Grails用户指南解释如何使用gradle设置grails依赖关系,并参考相关的Gradle文档以获得关于此主题的更多详细信息。

一对夫妇grails命令帮助说明区别。 考虑一下grails run-appgrails compilegrails compile是编译步骤,将包括编译时间依赖关系。 grails run-app是运行步骤,将包含运行时依赖项。 构build依赖关系是可能需要运行这些命令的任何东西,例如,挂钩到某些构build事件的自定义脚本。

所以当你需要确定依赖包括在内时,你会select最适合的。