¿Qué ofrece la app de Apple para libros electrónicos?

Publica Tu Librería Android en Maven Central

15/09/2025

Valoración: 4.98 (1401 votos)

Compartir tus creaciones es uno de los pilares fundamentales de la comunidad de desarrollo. Si has construido una librería Android útil y deseas que otros desarrolladores la utilicen fácilmente en sus proyectos, publicarla en Maven Central es el camino a seguir. Este repositorio es el estándar de facto para la distribución de librerías Java y Android, ofreciendo visibilidad y una gestión de dependencias simplificada para los consumidores.

¿Cómo comprar un móvil libre?
A la hora de comprar tu móvil libre tienes que tener en cuenta una serie de características: Sistema operativo: Es la primera decisión que debemos tomar y quizá la más importante a la hora de comprar un teléfono móvil. Los dos principales sistemas operativos son Android e IOS. Por debajo de ellos se encuentra Windows Phone.

En este artículo, desglosaremos el proceso, a menudo percibido como complejo, de subir tu librería a Maven Central, centrándonos en el ecosistema Android y las herramientas modernas de Gradle. Desde la configuración inicial de tu proyecto hasta la liberación final a través de Sonatype OSSRH, te guiaremos para que tu código sea accesible a la comunidad global.

Índice de Contenido

¿Por Qué Publicar Tu Librería en Maven Central?

Publicar tu librería en Maven Central no es solo una cuestión de prestigio; ofrece beneficios tangibles tanto para ti como desarrollador como para aquellos que usarán tu código. Aquí te detallamos las razones clave:

  • Reusabilidad y Simplificación: Una vez publicada, tu librería puede ser incluida en cualquier proyecto Android (o Java) con una simple línea en su archivo build.gradle. Esto elimina la necesidad de copiar archivos JAR/AAR manualmente o de configurar módulos locales.
  • Gestión de Dependencias: Maven Central, junto con herramientas como Gradle, maneja las dependencias transitivas. Si tu librería depende de otras, estas se descargarán automáticamente al añadir tu librería, simplificando enormemente la configuración del proyecto consumidor.
  • Visibilidad Global: Millones de desarrolladores buscan librerías en Maven Central a diario. Publicar allí aumenta drásticamente la visibilidad de tu trabajo y te permite contribuir de manera significativa a la comunidad de código abierto.
  • Versiones y Actualizaciones: Puedes publicar múltiples versiones de tu librería, permitiendo a los usuarios elegir la que mejor se adapte a sus necesidades y facilitando la distribución de actualizaciones y correcciones de errores.
  • Profesionalismo: Tener una librería en Maven Central es un signo de profesionalismo y compromiso con la calidad del software.

Es importante mencionar que, aunque JCenter fue una alternativa popular para librerías Android, ha cesado de aceptar nuevas subidas desde 2021, consolidando a Maven Central como la opción principal para la distribución pública.

Requisitos Previos Esenciales

Antes de sumergirnos en el proceso de publicación, asegúrate de tener los siguientes elementos y conocimientos a mano:

  • Java Development Kit (JDK): Necesitarás un JDK instalado y configurado correctamente en tu sistema para compilar tu librería.
  • Gradle: La herramienta de construcción por excelencia en proyectos Android. Asegúrate de entender los conceptos básicos de Gradle y cómo funciona tu build.gradle.
  • Control de Versiones (Git): Tu librería debe estar alojada en un repositorio de control de versiones público (GitHub, GitLab, Bitbucket, etc.). Esto es un requisito para Maven Central, ya que necesitan una URL SCM (Source Code Management).
  • Cuenta en Sonatype OSSRH: Sonatype Open Source Software Repository Hosting (OSSRH) es la plataforma que actúa como puerta de entrada a Maven Central. Necesitarás una cuenta y un ticket JIRA para solicitar y configurar tu Group ID.
  • Claves PGP (Pretty Good Privacy): Para garantizar la autenticidad de tu librería, Maven Central requiere que firmes digitalmente tus artefactos. Esto se hace con un par de claves PGP (pública y privada).

La Anatomía de una Dependencia: GAV (Group, Artifact, Version)

Cada librería en Maven Central se identifica de forma única mediante sus coordenadas GAV:

  • Group ID (ID de Grupo): Identifica el grupo o la organización que publica la librería. Convencionalmente, se utiliza el nombre de dominio invertido (ej., com.example.mylibrary). Debe ser único y registrado en Sonatype.
  • Artifact ID (ID de Artefacto): Identifica el proyecto o módulo específico dentro del grupo. Por ejemplo, si tu librería es un módulo Android llamado mycustomview, tu Artifact ID podría ser my-custom-view.
  • Version (Versión): La versión de tu librería (ej., 1.0.0, 1.0.1-SNAPSHOT). Las versiones SNAPSHOT son para desarrollo y no son estables, mientras que las versiones sin -SNAPSHOT se consideran estables y de lanzamiento.

Cuando alguien usa tu librería, la declara en su build.gradle de la siguiente manera:

implementation 'com.example.mylibrary:my-custom-view:1.0.0'

Donde com.example.mylibrary es el Group ID, my-custom-view es el Artifact ID y 1.0.0 es la Version.

Paso a Paso: Preparando Tu Librería Android para la Publicación

Aquí te presentamos una guía detallada para configurar tu proyecto Android y publicarlo en Maven Central.

1. Configuración del Proyecto Android

Asumimos que ya tienes un proyecto Android con un módulo de librería (tipo com.android.library). Si no, puedes crearlo desde Android Studio.

Modifica el build.gradle del Módulo de Librería

Abre el archivo build.gradle de tu módulo de librería (no el del proyecto raíz) y comienza a añadir las configuraciones necesarias.

Primero, aplica los plugins esenciales:

plugins {
id 'com.android.library'
id 'maven-publish' // Para publicar artefactos
id 'signing' // Para firmar artefactos
}

Luego, dentro del bloque android, asegúrate de que tu librería genere un AAR (Android Archive) y que la configuración de publicación sea correcta. Es crucial que la variante de compilación que deseas publicar sea release.

android {
namespace 'com.example.mylibrary' // Tu Group ID invertido
compileSdk 34

defaultConfig {
minSdk 21
// ... otras configuraciones
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

// Configuración para el plugin maven-publish
publishing {
singleVariant('release') {
withSourcesJar()
withJavadocJar()
}
}
}

El bloque publishing dentro de android es importante para indicar qué variante de compilación (release en este caso) debe ser empaquetada e incluir los JARs de fuentes y Javadoc, que son requisitos de Maven Central.

2. Detalles del POM (Project Object Model)

El POM es un archivo XML que describe el proyecto y su configuración. Gradle lo generará automáticamente, pero necesitamos proporcionarle la información necesaria.

Añade el siguiente bloque publishing a tu build.gradle, fuera del bloque android:

publishing {
repositories {
// Para publicar localmente, útil para pruebas
maven {
name = 'mavenLocal'
url = uri(layout.buildDirectory.dir('repo'))
}

// Repositorio de Sonatype OSSRH (para Maven Central)
maven {
name = 'Sonatype'
url = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/")
credentials {
username = System.getenv('OSSRH_USERNAME') ?: project.properties['ossrhUsername']
password = System.getenv('OSSRH_PASSWORD') ?: project.properties['ossrhPassword']
}
}
}

publications {
// Define tu publicación para el AAR de Android
androidLibrary(MavenPublication) {
groupId = 'com.example.mylibrary' // Tu Group ID
artifactId = 'my-custom-view' // Tu Artifact ID
version = '1.0.0' // La versión de tu librería

// Componente de Android para el AAR, fuentes y Javadoc
from components.release

// Detalles del POM (Project Object Model)
pom {
name = 'My Awesome Android Library'
description = 'A short description of my library.'
url = 'https://github.com/your-username/your-library-repo'

licenses {
license {
name = 'The Apache Software License, Version 2.0'
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}

developers {
developer {
id = 'your-id'
name = 'Your Name'
email = '[email protected]'
}
}

scm {
connection = 'scm:git:github.com/your-username/your-library-repo.git'
developerConnection = 'scm:git:ssh://github.com/your-username/your-library-repo.git'
url = 'https://github.com/your-username/your-library-repo'
}
}
}
}
}

Asegúrate de reemplazar los valores de ejemplo (com.example.mylibrary, my-custom-view, URLs, nombres, etc.) con los detalles reales de tu librería y tu persona. La información del POM es crucial para la validación en Maven Central.

Elementos Importantes del POM

ElementoDescripciónObligatorio para Maven Central
groupIdIdentificador único del grupo/organización.
artifactIdIdentificador único del proyecto/módulo.
versionVersión de la librería.
nameNombre legible de la librería.
descriptionBreve descripción de la funcionalidad.
urlURL del sitio web del proyecto o repositorio.
licensesInformación de la licencia bajo la cual se distribuye la librería.
developersInformación sobre los desarrolladores.
scmInformación del sistema de control de versiones (URL del repositorio).

3. Firma Digital con PGP

La firma digital es un requisito de seguridad para Maven Central. Asegura que los artefactos no han sido alterados y provienen del editor legítimo.

Generación de Claves PGP

Si no tienes un par de claves PGP, puedes generarlas usando GnuPG. Instala GnuPG si aún no lo tienes y luego ejecuta en tu terminal:

gpg --full-generate-key

Sigue las instrucciones, selecciona un tipo de clave (RSA y RSA), un tamaño de clave (4096 bits es recomendado), una fecha de expiración (sin expiración si lo deseas) y proporciona tu nombre, correo electrónico y una frase de contraseña (passphrase). Guarda esta frase de contraseña en un lugar seguro.

Para listar tus claves y obtener tu ID de clave (necesario para Gradle):

gpg --list-secret-keys --keyid-format LONG

Busca la línea que comienza con sec y anota el ID de 16 caracteres (ej., 4F1F41F1F1F1F1F1).

Configuración del Plugin signing

En tu build.gradle (el mismo del módulo de librería), añade el bloque signing:

signing {
sign publishing.publications.androidLibrary
}

Para que Gradle sepa qué clave usar y su frase de contraseña, debes configurar las propiedades en tu archivo gradle.properties (en la raíz de tu proyecto, no en el módulo de librería):

# gradle.properties
signing.gnupg.keyName=YOUR_KEY_ID_FROM_GPG
signing.gnupg.passphrase=YOUR_PGP_PASSPHRASE

# Credenciales de Sonatype OSSRH
ossrhUsername=YOUR_OSSRH_USERNAME
ossrhPassword=YOUR_OSSRH_PASSWORD

Importante: Para mayor seguridad, especialmente en entornos CI/CD, es preferible usar variables de entorno para las contraseñas, como se indica en el bloque publishing del build.gradle (System.getenv('OSSRH_USERNAME')). Si usas gradle.properties, asegúrate de que este archivo no se suba a tu repositorio público (añádelo a .gitignore).

4. Configuración de Sonatype OSSRH (para Maven Central)

Sonatype OSSRH es el punto de partida para que tu librería llegue a Maven Central.

Registrarse y Solicitar un Group ID

  1. Ve a issues.sonatype.org y crea una cuenta JIRA.
  2. Crea un nuevo ticket de tipo 'New Project'.
  3. En la descripción, explica que deseas publicar una librería de código abierto en Maven Central.
  4. El campo más importante es 'Group ID'. Debe ser un dominio que controles (ej., com.yourdomain o io.github.yourusername si usas GitHub). Sonatype verificará la propiedad del dominio.
  5. Una vez que tu ticket sea aprobado y tu Group ID configurado, recibirás las instrucciones para el siguiente paso.

Credenciales de Sonatype

Como se mostró en el paso 2, las credenciales de Sonatype se configuran en el bloque repositories de tu publishing. Asegúrate de que OSSRH_USERNAME y OSSRH_PASSWORD (o las propiedades en gradle.properties) contengan tus credenciales de Sonatype.

5. El Proceso de Publicación (Deploy)

Con todas las configuraciones en su lugar, ¡es hora de publicar!

Publicar Localmente (Opcional, para Pruebas)

Antes de subir a Sonatype, puedes probar la publicación localmente para asegurarte de que todo funciona. Esto creará los artefactos en una carpeta repo dentro de tu directorio build.

./gradlew publishToMavenLocal

Esto generará los archivos AAR, JAR de fuentes, JAR de Javadoc y el POM firmado en tu repositorio local. Puedes verificar estos archivos para asegurarte de que todo está correcto.

Publicar a Sonatype OSSRH

Una vez que estés seguro de que tu configuración es correcta, ejecuta el siguiente comando para subir tu librería a Sonatype:

./gradlew publishAllPublicationsToSonatypeRepository

Este comando compilará tu librería, generará los artefactos (AAR, fuentes, Javadoc, POM), los firmará con tu clave PGP y los subirá al repositorio de staging de Sonatype.

Si todo va bien, verás un mensaje de BUILD SUCCESSFUL.

Versiones Snapshot vs. Release

Durante el desarrollo, puedes usar versiones SNAPSHOT (ej., 1.0.0-SNAPSHOT). Estas versiones se publican en un repositorio de snapshots de Sonatype y no requieren el proceso de cierre y liberación en Nexus. Son ideales para pruebas internas o para compartir versiones pre-lanzamiento. Para una versión final, debes usar una versión de lanzamiento sin -SNAPSHOT.

6. Cierre y Liberación en Sonatype Nexus Repository Manager

Después de ejecutar el comando de publicación, tu librería estará en un 'repositorio de staging' en Sonatype Nexus. Este es un área temporal donde puedes verificar que todos los artefactos estén presentes y sean correctos antes de la liberación final a Maven Central.

  1. Accede a Sonatype Nexus Repository Manager en s01.oss.sonatype.org.
  2. Inicia sesión con tus credenciales de Sonatype.
  3. En el menú de la izquierda, selecciona 'Staging Repositories'.
  4. Busca tu repositorio de staging. Generalmente tendrá un nombre que incluye tu Group ID y una marca de tiempo (ej., comexamplemylibrary-1234).
  5. Selecciona tu repositorio. En la parte inferior, verás los artefactos que has subido.
  6. Haz clic en el botón 'Close' (Cerrar). Esto valida que todos los requisitos de Maven Central se cumplen (artefactos presentes, firmas correctas, POM completo, etc.). Si hay errores, el cierre fallará y te mostrará el motivo. Deberás corregir los errores, borrar el repositorio de staging y volver a subir.
  7. Una vez que el repositorio se haya cerrado correctamente (el estado cambiará a 'Closed'), el botón 'Release' (Liberar) se habilitará. Haz clic en él.
  8. Confirma la liberación.

Después de la liberación, tu librería comenzará el proceso de sincronización con Maven Central. Este proceso puede tardar entre 10 minutos y varias horas (normalmente menos de 2 horas) hasta que tu librería sea visible y descargable desde Maven Central.

Errores Comunes y Soluciones

  • Problemas de Firma: Asegúrate de que tu clave PGP sea válida, que la frase de contraseña sea correcta y que signing.gnupg.keyName y signing.gnupg.passphrase estén configurados correctamente. Verifica que el plugin signing esté aplicado.
  • Credenciales Incorrectas: Revisa tus credenciales de Sonatype y asegúrate de que las variables de entorno o las propiedades en gradle.properties sean correctas.
  • Información del POM Incompleta: Los errores de cierre en Sonatype Nexus a menudo se deben a información faltante o incorrecta en el POM (licencias, desarrolladores, SCM, etc.). Revisa la tabla de elementos obligatorios.
  • Group ID No Aprobado: Si tu Group ID no ha sido aprobado por Sonatype, no podrás publicar. Asegúrate de haber completado el proceso de solicitud de ticket JIRA.
  • Artefactos Faltantes: Asegúrate de que withSourcesJar() y withJavadocJar() estén configurados en el bloque publishing dentro de android.

¿Cómo Usar Tu Librería Publicada?

Una vez que tu librería esté en Maven Central, cualquier desarrollador puede usarla fácilmente. Simplemente necesitan añadirla como una dependencia en su archivo build.gradle (a nivel de módulo):

dependencies {
implementation 'com.example.mylibrary:my-custom-view:1.0.0'
}

Y luego, pueden utilizar tu librería en su código, por ejemplo, en un layout XML si es una vista personalizada:

<com.example.mylibrary.MyCustomView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is my custom view from my little library." />

Preguntas Frecuentes (FAQ)

¿Cuánto tarda en aparecer mi librería en Maven Central?

Una vez que liberas tu repositorio de staging en Sonatype Nexus, la sincronización con Maven Central suele tardar entre 10 minutos y 2 horas. En casos excepcionales, puede demorar hasta 24 horas.

¿Puedo publicar múltiples módulos de librería en un solo proyecto?

Sí, puedes configurar múltiples publicaciones en tu archivo build.gradle, una por cada módulo de librería que desees publicar. Cada módulo tendrá su propio artifactId pero puede compartir el mismo groupId.

¿Qué es un archivo AAR/JAR y cuál debo usar?

Un archivo JAR (Java Archive) contiene clases compiladas de Java y recursos. Un archivo AAR (Android Archive) es un formato de archivo específico de Android que contiene código compilado, recursos Android (layouts, draws, etc.) y un manifiesto Android. Para librerías Android, siempre debes publicar un archivo AAR.

¿Necesito un sitio web para mi librería?

No es estrictamente necesario tener un sitio web dedicado, pero sí es un requisito para Maven Central proporcionar una URL para tu proyecto en la sección pom.url. Esta puede ser la URL de tu repositorio de GitHub, GitLab o Bitbucket.

¿Puedo usar GitHub Packages o GitLab Package Registry en su lugar?

Sí, GitHub Packages y GitLab Package Registry son alternativas excelentes para alojar librerías Maven (y de otros tipos). Son particularmente útiles para librerías privadas o para proyectos de código abierto que no necesitan la visibilidad global de Maven Central. Sin embargo, si tu objetivo es la máxima exposición y facilidad de uso para la comunidad de código abierto, Maven Central sigue siendo el estándar de oro.

Conclusión

Publicar tu librería Android en Maven Central es un paso significativo para cualquier desarrollador que desee compartir su trabajo y contribuir a la comunidad. Aunque el proceso puede parecer intimidante al principio debido a los múltiples pasos y requisitos, siguiendo esta guía detallada, habrás configurado tu proyecto, firmado tus artefactos y liberado tu creación para que millones de desarrolladores la utilicen. ¡Ahora tu pequeña librería puede tener un gran impacto en el mundo del desarrollo Android!

Si quieres conocer otros artículos parecidos a Publica Tu Librería Android en Maven Central puedes visitar la categoría Librerías.

Subir