What's the difference between build
, runtime
, and compile
, in BuildConfig.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")
}
}
build
- dependency that is only needed by the build processruntime
- dependency that is needed to run the application, but not compile it e.g. JDBC implementation for specific database vendor. This would not typically be needed at compile-time because code depends only the JDBC API, rather than a specific implementation thereofcompile
- dependency that is needed at both compile-time and runtime. This is the most common caseThere are a couple of other dependency scopes:
test
- dependency that is only needed by the tests, e.g. a mocking/testing library provided
- dependency that is needed at compile-time but should not be packaged with the app (usually because it is provided by the container). An example is the Servlet API