Objetivo del tema
En este tema aprenderás a generar artefactos JAR y WAR, desplegarlos en repositorios remotos, trabajar con repositorios privados y gestionar versiones SNAPSHOT frente a versiones liberadas usando Apache Maven.
El plugin maven-jar-plugin
empaqueta las clases compiladas en un archivo JAR cuando la fase package concluye. La configuración básica depende del tipo de proyecto y se puede extender para incluir metadatos propios.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
mvn clean package
para crear el JAR en target/<artifactId>-<version>.jar
.<mainClass>
para generar JARs ejecutables.maven-shade-plugin
si necesitas empaquetar dependencias en un fat JAR.Los proyectos web deben declarar <packaging>war</packaging>
. Maven usará maven-war-plugin
para empaquetar la aplicación con estructura estándar.
<project ...>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
target/<artifactId>-<version>.war
.src/main/webapp
y archivos de configuración como WEB-INF/web.xml
si son necesarios.spring-boot-maven-plugin
genera WAR o JAR ejecutables según la configuración.El comando mvn deploy
ejecuta la fase deploy, instalando el artefacto en un repositorio remoto definido en el POM o en settings.xml
. Es habitual utilizar herramientas como Nexus Repository o Artifactory.
<distributionManagement>
<repository>
<id>releases</id>
<url>https://repo.miempresa.com/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>https://repo.miempresa.com/snapshots</url>
</snapshotRepository>
</distributionManagement>
settings.xml
dentro de la sección <servers>
para los IDs releases
y snapshots
.mvn -Pdeploy clean deploy
si deseas activar perfiles específicos para la publicación.Los repositorios privados permiten controlar el acceso a dependencias internas y mantener artefactos corporativos. Se definen en la sección <repositories>
del POM o en settings.xml
.
Gestionar estos repositorios con soluciones como Nexus Repository o Artifactory permite auditar versiones, permisos y flujos de aprobación.
Maven diferencia las versiones de desarrollo (SNAPSHOT) de las versiones liberadas. Los SNAPSHOT se sobrescriben con cada publicación, mientras que las versiones liberadas son inmutables.
-SNAPSHOT
mientras el desarrollo está en curso para compartir avances frecuentes.1.0.0
) y etiqueta el commit en el control de versiones.maven-release-plugin
para automatizar el proceso de liberación y actualizar SNAPSHOT a versiones definitivas.Adoptar una estrategia clara de versionado evita confusiones en equipos distribuidos y asegura que los artefactos desplegados sean reproducibles.
Maven facilita la generación de artefactos JAR y WAR, la publicación en repositorios remotos y la administración de versiones. Al combinar configuraciones de distributionManagement
, repositorios privados y políticas de SNAPSHOT vs liberados, es posible establecer flujos de despliegue confiables para equipos profesionales.