Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Grails BuildConfig.groovy, difference between build, compile, and runtime?

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")
    }
}
like image 454
raffian Avatar asked Jan 05 '12 23:01

raffian


3 Answers

  • build - dependency that is only needed by the build process
  • runtime - 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 thereof
  • compile - dependency that is needed at both compile-time and runtime. This is the most common case

There 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
like image 63
Dónal Avatar answered Nov 18 '22 09:11

Dónal


It seems the 2 previous answers conflict on the distinction between compile and build. I believe that build is the scope that includes grails compile and grails run-app, while compile is just the former.

like image 21
John Troxel Avatar answered Nov 18 '22 08:11

John Troxel


From Grails 3, dependencies are managed by Gradle. The grails-app/conf/BuildConfig.groovy file has been replaced by the build.gradle file in the project's root.

The Grails user guide explain how to set grails depencies with gradle and refers to the related Gradle documentation for more details about this topic.

like image 2
lifeisfoo Avatar answered Nov 18 '22 08:11

lifeisfoo