compilation reference - Grails BuildConfig.groovy, diferencia entre compilación, compilación y tiempo de ejecución?




3.3 documentation (5)

Un par de comandos de Grails ayudan a ilustrar la diferencia. Considere la grails compile grails run-app y grails compile . grails compile es el paso de compilación e incluirá dependencias en tiempo de compilación. grails run-app es el paso de ejecución e incluirá las dependencias de tiempo de ejecución. Las dependencias de compilación son cualquier cosa que pueda necesitar para ejecutar cualquiera de estos comandos, por ejemplo, un script personalizado que enganche en algunos eventos de compilación.

De modo que elegiría la que mejor se adapte cuando necesite estar seguro de que se incluye la dependencia.

Cuál es la diferencia entre build , runtime y compile en BuildConfig.groovy ( 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")
    }
}

Parece que las 2 respuestas anteriores entran en conflicto con la distinción entre compilar y compilar. Creo que build es el alcance que incluye grails compile y grails run-app , mientras que compile es solo el primero.



  • build - dependencia que solo necesita el proceso de compilación
  • runtime : dependencia que se necesita para ejecutar la aplicación, pero no compilarla, por ejemplo, la implementación de JDBC para un proveedor de base de datos específico. Normalmente, esto no sería necesario en tiempo de compilación porque el código solo depende de la API de JDBC, en lugar de una implementación específica de la misma.
  • compile : dependencia necesaria tanto en tiempo de compilación como en tiempo de ejecución. Este es el caso más común

Hay un par de otros ámbitos de dependencia:

  • test - dependencia que solo es necesaria para las pruebas, por ejemplo, una biblioteca de burla / prueba
  • provided - dependencia que se necesita en tiempo de compilación, pero que no se debe empaquetar con la aplicación (generalmente porque la proporciona el contenedor). Un ejemplo es la API Servlet

out << g.datePicker(etc...) debería hacerlo. Los otros prefijos de taglib se metaprograman automáticamente.