Repositorios personalizados y BOM
Configure repositorios personalizados de Maven o Ivy y utilice Bill of Materials (BOM) para mantener versiones coherentes de las dependencias.
Repositorios personalizados y BOM es una lección gratuita de Groovy & Gradle: JVM Automation and Build Engineering en CoddyKit. Esta es la lección 3 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.
Beyond Maven Central
By default, Gradle looks for dependencies in Maven Central. But what if your dependencies aren't there?
Custom repositories allow you to fetch libraries from other locations, like:
- Your company's private artifact server.
- Specific public repositories (e.g., Google's Maven repo for Android).
- Local file system directories.
Adding a Maven Repository
To add a custom Maven repository, you declare it in the repositories block of your build.gradle file.
Gradle will check repositories in the order they are declared, stopping at the first match.
repositories {
mavenCentral()
maven {
url 'https://repo.spring.io/milestone'
}
}Example: Google Maven Repo
Many Android libraries are hosted on Google's Maven repository. You'd add it like this:
This is crucial for projects using Google-specific libraries.
repositories {
google() // Shortcut for Google's Maven repo
mavenCentral()
}Understanding Ivy Repositories
While Maven is very common, Gradle also supports Ivy repositories. Ivy has a more flexible layout for artifacts.
You might encounter Ivy repositories in older projects or specific corporate environments.
repositories {
ivy {
url "http://repo.mycompany.com/ivy"
layout "pattern", {
artifact "[organization]/[module]/[revision]/[artifact](-[classifier])-[revision].[ext]"
}
}
}Local Directory as Repo
For testing or internal use, you can even use a local directory as a repository. This is handy for sharing artifacts within a team without a dedicated server.
Just specify the path to your local folder.
repositories {
flatDir {
dirs 'libs' // Looks for JARs directly in the 'libs' folder
}
// Or a more structured Maven-like local repo
maven {
url uri('../my-local-maven-repo')
}
}Bill of Materials (BOMs)
A Bill of Materials (BOM) is a special Maven POM file that defines a curated list of dependency versions.
It helps manage transitive dependencies and ensures consistent versions across a multi-module project or when using a suite of related libraries.
Consistency with BOMs
BOMs solve a common problem: dependency version conflicts. If multiple libraries depend on different versions of the same transitive dependency, you can end up with unpredictable behavior.
With a BOM, you declare a single "source of truth" for versions, making your build more reliable.
Importing a BOM
To use a BOM in Gradle, you declare it as a dependency using the platform() or enforcedPlatform() function. This tells Gradle to use the versions specified in the BOM.
Notice how we don't specify versions for spring-core or spring-web; the BOM handles it!
dependencies {
implementation platform('org.springframework.boot:spring-boot-dependencies:2.7.5')
// These versions are now managed by the BOM
implementation 'org.springframework:spring-core'
implementation 'org.springframework:spring-web'
}Platform vs. EnforcedPlatform
There are two ways to import a BOM:
platform(): Suggests versions. Other modules can override these versions if explicitly declared.enforcedPlatform(): Strictly enforces versions. Any explicitly declared versions for dependencies in the BOM will be overridden by the BOM's version.
Use enforcedPlatform() for strong version consistency.
Check Your Knowledge
Let's test your understanding of custom repositories and BOMs!
Custom Repos & BOMs Recap
Great job! You've learned how to:
- Configure custom Maven and Ivy repositories in Gradle.
- Understand the importance of repository order.
- Use local directories as repositories.
- Leverage Bill of Materials (BOMs) for consistent dependency version management.
- Differentiate between
platform()andenforcedPlatform().
These techniques are vital for managing complex dependency landscapes in real-world projects!
Preguntas frecuentes
¿La lección «Repositorios personalizados y BOM» es gratis?
Sí — el texto completo de «Repositorios personalizados y BOM» 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 «Repositorios personalizados y BOM»?
Configure repositorios personalizados de Maven o Ivy y utilice Bill of Materials (BOM) para mantener versiones coherentes de las dependencias. 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 3 de 4.
¿Cuánto tiempo toma la lección «Repositorios personalizados y BOM»?
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
- Declaración de dependencias del proyecto
- Resolución y almacenamiento en caché de dependencias
- Repositorios personalizados y BOM
- Resolución de conflictos de versiones y restricciones de dependencias