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

raf*_*ian 62 grails config compilation build

什么之间的区别build,runtime以及compileBuildConfig.groovy(1.3.7)

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")
    }
}
Run Code Online (Sandbox Code Playgroud)

Dón*_*nal 99

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

还有一些其他依赖范围:

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

  • @RaffiM,您可以在“BuildConfig.groovy”的“repositories”部分中配置存储库,以避免为每个依赖项进行配置 (2认同)

小智 5

似乎前两个答案在编译和构建之间的区别上存在冲突.我认为,构建的是,包括的范围grails compilegrails run-app,而编译仅仅是前者.