Grails BuildConfig.groovy, diferencia entre construir, compilar y tiempo de ejecución?


¿Cuál es la diferencia entre build, runtime, y compile, en 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")
    }
}
Author: raffian, 2012-01-06

4 answers

  • build - dependencia que solo es necesaria para 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. Esto normalmente no sería necesario en tiempo de compilación porque el código depende solo de la API JDBC, en lugar de una implementación específica de la misma
  • compile - dependencia que se necesita tanto en tiempo de compilación como en tiempo de ejecución. Este es el caso más común

Hay una pareja de otros ámbitos de dependencia:

  • test - dependencia que solo es necesaria para las pruebas, por ejemplo, una biblioteca de simulación/pruebas
  • provided - dependencia que se necesita en tiempo de compilación pero que no se debe empaquetar con la aplicación (normalmente porque es proporcionada por el contenedor). Un ejemplo es Servlet API
 98
Author: Dónal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-02 16:41:32

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

 5
Author: John Troxel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-27 20:32:11

Desde Grails 3, las dependencias son administradas por Gradle. El archivo grails-app/conf/BuildConfig.groovy ha sido reemplazado por el archivo build.gradle en la raíz del proyecto.

La guía del usuario de Grails explica cómo establecer dependencias de grails con gradle y se refiere a la documentación de Gradle relacionada con para obtener más detalles sobre este tema.

 2
Author: lifeisfoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-13 11:36:44

Un par de comandos griales ayudan a ilustrar la diferencia. Consideremos 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á 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 se enganche a algunos eventos de compilación.

Así que elegiría el que mejor se adapte cuando necesite estar seguro de que la dependencia está incluida.

 1
Author: doelleri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-06 00:07:33