Différence entre les configurations de compilation et d'exécution dans Gradle

102

Ma question est un peu courante, mais elle est également liée à Gradle.

Pourquoi avons-nous besoin d'une configuration de compilation et d'exécution?

Lorsque je compile quelque chose, j'ai besoin d'artefacts pour convertir mes classes Java en bytecode, donc j'ai besoin d'une configuration de compilation, mais pourquoi une configuration d'exécution est-elle nécessaire ai-je besoin d'autre chose pour exécuter mon application dans JVM?

Désolé si cela semble stupide, mais je ne comprends pas.

Xelian
la source

Réponses:

149

Dans le cas le plus courant, les artefacts nécessaires au moment de la compilation sont un sous-ensemble de ceux nécessaires à l'exécution. Par exemple, disons qu'un programme appelé apputilise une bibliothèque fooet qu'une bibliothèque utilise foo une bibliothèque en internebar . Alors seulement fooest nécessaire pour compiler app, mais les deux fooet barsont nécessaires pour l'exécuter. C'est pourquoi par défaut, tout ce que vous mettez sur la compileconfiguration de Gradle est également visible sur sa runtimeconfiguration, mais l'inverse n'est pas vrai.

Peter Niederwieser
la source
20
Dommage que cela ne soit pas mentionné explicitement dans gradle.org/docs/current/userguide/dependency_management.html . Ils utilisent à la fois la compilation et l'exécution sans indiquer explicitement leur signification ...
silasdavis
2
@silasdavis Dans la documentation explique la différence: gradle.org/docs/current/userguide/… en 8.3. Configurations de dépendance
angelcervera
@angelcervera Ah oui, 8. Bases de la gestion des dépendances, et 51. Gestion des dépendances. Je peux voir pourquoi ils ont deux sections, mais ce serait peut-être bien que la seconde fasse référence à la première. Je pense que j'ai atterri sur 51 et je m'attendais à ce qu'il donne un compte rendu complet.
silasdavis
@silasdavis True. Idem pour les autres sections de la documentation. Je dois prendre le même temps libre pour lire toute la documentation de A à Z.
angelcervera
1
@Peter Niederwieser Si la tâche de compilation montre les mêmes dépendances que le runtime, dans quel scénario utiliseriez-vous le runtime plutôt que la compilation?
rj2700