subproyectos proyectos proyecto para multiproyectos maestro gratis fecha este español escrita entre dependencias campo admite gradle

gradle - para - ¿Cuál es la diferencia entre todos los proyectos y subproyectos?



proyectos de project (2)

Añadiendo a la respuesta de Ryan, el método de configure se vuelve importante cuando quiere configurar subconjuntos de objetos personalizados. Por ejemplo configure([project(":foo"), project(":bar")]) { ... } o configure(tasks.matching { it.name.contains("foo") }) { ... } .

Cuándo usar todos los allprojects vs. subprojects depende de las circunstancias. A menudo usarás ambos. Por ejemplo, los complementos relacionados con el código como el complemento de Java se suelen aplicar a los subprojects , porque en muchas versiones el proyecto raíz no contiene ningún código. Los complementos de Eclipse e IDEA, por otro lado, se suelen aplicar a todos los allprojects . Si tiene dudas, observe ejemplos y otras compilaciones y / o experimente. El objetivo general es evitar la configuración irrelevante. En ese sentido, los subprojects son mejores que todos los allprojects siempre que allprojects los resultados esperados.

En una construcción gradle de varios proyectos, ¿alguien me puede decir cuál es exactamente la diferencia entre la sección "todos los proyectos" y la de "subproyectos"? ¿Solo el directorio principal? ¿Alguien usa ambos? De ser así, ¿tiene reglas generales que determinen qué se pone típicamente en cada una?

Pregunta relacionada: ¿cuál es la diferencia entre las dos sintaxis (realmente para todos los proyectos Y subproyectos):

subprojects { ... }

y

configure(subprojects) { ... }

¿Cuándo lo haría uno sobre el otro?


En una compilación gradle multiproyecto, tiene un proyecto raíz y los subproyectos. La combinación de ambos es todos los proyectos. El proyecto raíz es el origen de la construcción. Un patrón común es que un proyecto de raíz no tiene código y los subproyectos son proyectos de Java. En ese caso, aplique el complemento java solo a los subproyectos:

subprojects { apply plugin: ''java'' }

Esto sería equivalente a un proyecto maven aggregate pom que solo construye los submódulos.

En cuanto a las dos sintaxis, hacen exactamente lo mismo. El primero se ve mejor.