Un proyecto de varios módulos tiene un módulo principal y muchos submódulos. Tiene este diseño:
(root)
+- settings.gradle
+- build.gradle # optional (commonly present)
+- gradle.properties # optional
+-- buildSrc/ # optional
| +- build.gradle
| +-- src/...
+-- my-gradle-stuff/ # optional
| +- utils.gradle # optional
+-- sub-a/
| +- build.gradle
| +- src/
+-- sub-b/
+- build.gradle
+- src/
Los submódulos también se pueden ubicar más profundamente en las subcarpetas, pero sin modificar el código en settings.gradle, su nombre incluirá el nombre de dichas carpetas.
settings.gradle
La función principal de settings.gradle es definir todos los submódulos incluidos y marcar la raíz del directorio de un árbol de módulos, por lo que solo puede tener un settings.gradle
archivo en un proyecto de varios módulos.
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
El archivo de configuración también está escrito en groovy y la búsqueda de submódulos se puede personalizar.
build.gradle
Hay uno de esos archivos por módulo, contiene la lógica de compilación para este módulo.
En el build.gradle
archivo del módulo principal , puede usar allprojects {}
o subprojects {}
para definir configuraciones para todos los demás módulos.
En el build.gradle
archivo de los submódulos, puede usar compile project(':sub-a')
para hacer que un submódulo dependa del otro.
gradle.properties
Esto es opcional, su propósito principal es proporcionar opciones de inicio para usar para ejecutar gradle, por ejemplo
org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
Estos valores pueden ser anulados por un archivo USER_HOME/.gradle/gradle.properties
y anulados por los argumentos de la línea de comandos de Gradle. También es posible establecer variables de entorno para la compilación en este archivo usando systemProp.
como prefijo.
Cualquier propiedad de este archivo se puede usar en cualquier build.gradle, por lo que algunos proyectos también incluyen la versión de dependencia o la información de lanzamiento gradle.properties
, pero es probable que se abuse de este archivo.
my-gradle-stuff / utils.gradle
(Es posible cualquier nombre de carpeta o archivo). Puede definir archivos gradle personalizados adicionales para reutilizar las definiciones e incluirlas en otros archivos gradle a través de
apply from: "$rootDir/gradle/utils.gradle"
otros lugares para poner esto podrían ser src/gradle
osrc/build/gradle
buildSrc / ...
Esta carpeta es especial, es como un proyecto de Gradle separado en sí mismo. Se crea antes de hacer cualquier otra cosa y puede proporcionar una función para usar en cualquier otro archivo gradle. Por razones técnicas, el soporte de IDE para referencias a esta carpeta funciona mucho mejor que cualquier otra forma de extraer código común de varios build.gradle
archivos a una ubicación separada.
Puede definir una lógica de compilación personalizada compleja en java, groovy o kotlin, en lugar de escribir e implementar un complemento. Esto también es útil para realizar pruebas unitarias de su código de compilación personalizado, ya que puede tener pruebas unitarias. La estructura de la carpeta de origen en buildSrc
se puede adaptar como para cualquier proyecto java / groovy / kotlin.