Subproyectos y configuraciones
Defina y configure subproyectos, comprendiendo cómo interactúan dentro de una compilación con varios proyectos.
Subproyectos y configuraciones es una lección gratuita de Groovy & Gradle: JVM Automation and Build Engineering en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Groovy & Gradle: JVM Automation and Build Engineering, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Groovy & Gradle: JVM Automation and Build Engineering incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
Welcome to Subprojects!
In large software projects, keeping everything in one giant build file can get messy. This is where subprojects come in handy!
Subprojects allow you to break down a big project into smaller, manageable modules. Think of them as mini-projects living within your main project.
- Modularity: Organize code logically.
- Reusability: Share common logic across modules.
- Faster Builds: Gradle can optimize builds by only working on changed subprojects.
Declaring Subprojects
To tell Gradle about your subprojects, you use the settings.gradle file. This file lives in your root project directory.
You use the include keyword, followed by the path to your subproject's directory. Each subproject usually resides in its own folder.
/* settings.gradle */
rootProject.name = 'my-multi-project'
include 'app'
include 'library'Subproject Directory Structure
Once declared in settings.gradle, your project structure will typically look like this:
my-multi-project/(root project)settings.gradlebuild.gradle(root build file)app/(subproject 1)build.gradle- ... (source code, resources)
library/(subproject 2)build.gradle- ... (source code, resources)
Each subproject gets its own build.gradle file.
Subproject Build Files
Just like your root project, each subproject has its own build.gradle file. This allows you to define specific configurations, dependencies, and tasks for that particular module.
For example, your app subproject might build a runnable application, while your library subproject might produce a reusable JAR.
/* library/build.gradle */
plugins {
id 'java'
}
group 'com.coddykit'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
}Defining a Subproject Task
You can define tasks within a subproject's build.gradle file. These tasks are then specific to that subproject.
Let's add a simple task to our library subproject that prints a message.
/* library/build.gradle */
plugins {
id 'java'
}
group 'com.coddykit'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
task helloLibrary {
doLast {
println "Hello from the Library subproject!"
}
}Executing Subproject Tasks
To run a task belonging to a specific subproject from the root directory, you use a colon : to separate the subproject name and the task name.
For example, to run the helloLibrary task from our library subproject:
public class Main {
public static void main(String[] args) {
System.out.println("To run the task: gradle :library:helloLibrary");
System.out.println("Output will be: Hello from the Library subproject!");
}
}Common Configuration: allprojects
Sometimes, you want to apply the same configuration to all projects in your multi-project build (the root project and all its subprojects).
You can do this using the allprojects { ... } block in your root build.gradle file.
/* build.gradle (root) */
allprojects {
group 'com.coddykit.common'
version '1.0.0'
repositories {
mavenCentral()
}
}Targeting Specific Subprojects
While allprojects is great for common settings, you often need to configure individual subprojects from the root build file.
You can use the project(':subprojectName') { ... } block to apply configuration specifically to one subproject.
/* build.gradle (root) */
project(':app') {
apply plugin: 'application'
mainClassName = 'com.coddykit.app.MainApp'
}
project(':library') {
apply plugin: 'java-library'
}Sharing Properties
You can also share properties or variables from your root project to all subprojects. This is useful for things like consistent version numbers or build flags.
Use the ext block (for "extra properties") in the root build.gradle and access it with rootProject.ext.propertyName in subprojects.
/* build.gradle (root) */
ext {
groovyVersion = '3.0.9'
springBootVersion = '2.7.5'
}
allprojects {
// Access properties in subprojects
println "Groovy Version: ${rootProject.ext.groovyVersion}"
}Multi-Select Check
Which of the following statements about Gradle subprojects and their configuration are TRUE?
Subprojects Recap
Great job! You've learned the basics of setting up and configuring Gradle subprojects.
- Subprojects help organize large builds.
- They are declared in
settings.gradleusinginclude. - Each subproject has its own
build.gradle. - You can configure all projects using
allprojects { ... }or specific ones usingproject(':name') { ... }. - Tasks are run with the
:subproject:tasksyntax.
Next, we'll explore how subprojects can depend on each other!
Aprende Groovy con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 12
- Lecciones
- 48
Preguntas frecuentes
¿La lección «Subproyectos y configuraciones» es gratis?
Sí — el texto completo de «Subproyectos y configuraciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Groovy & Gradle: JVM Automation and Build Engineering, actualiza a CoddyKit PRO. El curso de Groovy & Gradle: JVM Automation and Build Engineering incluye 4 lecciones en total.
¿Qué aprenderé en «Subproyectos y configuraciones»?
Defina y configure subproyectos, comprendiendo cómo interactúan dentro de una compilación con varios proyectos. Practicas Groovy & Gradle: JVM Automation and Build Engineering con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Groovy & Gradle: JVM Automation and Build Engineering?
No se requiere experiencia previa. Groovy & Gradle: JVM Automation and Build Engineering en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Subproyectos y configuraciones»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Groovy & Gradle: JVM Automation and Build Engineering?
Sí. Cada lección de Groovy & Gradle: JVM Automation and Build Engineering incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estructura de proyectos en un monorepo
- Subproyectos y configuraciones
- Dependencias entre proyectos
- Compilaciones compuestas y composición de compilaciones