web-dev-qa-db-fra.com

Grails BuildConfig.groovy, différence entre build, compile et runtime?

Quelle est la différence entre build, runtime et compile, dans 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")
    }
}
62
raffian
  • build - dépendance nécessaire uniquement au processus de génération
  • runtime - dépendance nécessaire pour exécuter l'application, mais pas pour la compiler, par exemple Implémentation JDBC pour un fournisseur de base de données spécifique. Cela ne serait généralement pas nécessaire au moment de la compilation car le code dépend uniquement de l'API JDBC, plutôt que d'une implémentation spécifique de celle-ci
  • compile - dépendance nécessaire à la fois à la compilation et à l'exécution. C'est le cas le plus courant

Il existe quelques autres étendues de dépendance:

  • test - dépendance qui n'est nécessaire que pour les tests, par ex. une bibliothèque de simulation/test
  • provided - dépendance nécessaire au moment de la compilation mais qui ne doit pas être fournie avec l'application (généralement parce qu'elle est fournie par le conteneur). Un exemple est l'API Servlet
99
Dónal

Il semble que les 2 réponses précédentes soient en conflit sur la distinction entre compiler et compiler. Je crois que la construction est la portée qui comprend grails compile et grails run-app, tandis que la compilation n'est que la première.

5
John Troxel

Depuis Grails 3, les dépendances sont gérées par Gradle. Le grails-app/conf/BuildConfig.groovy fichier a été remplacé par le build.gradle fichier à la racine du projet.

Le guide de l'utilisateur Grails expliquez comment définir les dépendances Grails avec gradle et se réfère à documentation Gradle connexe pour plus de détails sur ce sujet.

2
lifeisfoo

Quelques commandes Grails aident à illustrer la différence. Considérer grails run-app et grails compile. grails compile est l'étape de compilation et inclura les dépendances au moment de la compilation. grails run-app est l'étape d'exécution et inclura les dépendances d'exécution. Les dépendances de génération sont tout ce dont vous pourriez avoir besoin pour exécuter l'une de ces commandes, par exemple, un script personnalisé qui se connecte à certains événements de génération.

Vous choisiriez donc celui qui convient le mieux lorsque vous devez être certain que la dépendance est incluse.

1
doelleri