Actualmente estoy teniendo un problema al intentar configurar un proyecto para implementar en un repositorio interno de nexus. Como soy un poco nuevo para Maven en general, espero que haya algo que no entiendo realmente sobre cómo configurar la administración de distribución.¿Por qué Maven (¿incorrectamente?) Implementa mi SNAPSHOT en los repositorios de lanzamiento e instantánea?
El problema básico es que cuando ejecuto "mvn deploy" el artefacto se implementa correctamente en el repositorio de instantáneas, pero Maven también intenta implementarlo en el repositorio de versiones, que está fallando ... como debería. Mi comprensión de mi configuración actual es que NO debería implementarla en el repositorio de versiones también.
He incluido los diversos elementos de configuración a continuación, pero me pregunto si realmente se supone que debo administrar la sección con un perfil para que las compilaciones de instantáneas solo se hayan definido, y las versiones de lanzamiento solo se hayan definido.
Cualquier ayuda/aclaración sobre este tema sería muy apreciada.
Tengo el siguiente en mi POM para la gestión de distribución:
<distributionManagement>
<repository>
<id>internal-releases</id>
<name>Internal Releases</name>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>internal-snapshots</id>
<name>Internal Snapshots</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
En otras partes del POM Tengo el siguiente configurado para permitir el uso de estos repositorios para obtener artefactos:
<repositories>
<repository>
<id>internal-releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
<snapshots><enabled>false</enabled></snapshots>
</repository>
<repository>
<id>internal-snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<!-- other repos, etc, etc -->
</repositories>
I tener las configuraciones correctas en mi settings.xml para proporcionar credenciales para poder publicar en esta instancia de prueba nexus que se ejecuta en mi computadora, y de hecho está implementando exitosamente la instantánea.
El problema es que también trata de desplegar la instantánea en el repositorio de la liberación, que está configurado para no permitir instantáneas.
La salida de "mvn despliegan" incluye lo siguiente:
[INFO] [deploy:deploy {execution: default-deploy}]
[INFO] Retrieving previous build number from internal-snapshots
Uploading: http://localhost:8081/nexus/content/repositories/snapshots/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-8.war
405K uploaded (service-1.0.0-20101104.170338-8.war)
[INFO] Retrieving previous metadata from internal-snapshots
[INFO] Uploading repository metadata for: 'snapshot com.internal:service:1.0.0-SNAPSHOT'
[INFO] Retrieving previous metadata from internal-snapshots
[INFO] Uploading repository metadata for: 'artifact com.internal:service'
[INFO] Uploading project information for service 1.0.0-20101104.170338-8
[INFO] [deploy:deploy-file {execution: default}]
[INFO] Retrieving previous build number from remote-repository
[INFO] repository metadata for: 'snapshot com.internal:service:1.0.0-SNAPSHOT' could not be found on repository: remote-repository, so will be created
Uploading: http://localhost:8081/nexus/content/repositories/releases/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error deploying artifact: Failed to transfer file: http://localhost:8081/nexus/content/repositories/releases/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar. Return code is: 400
El registro de Nexus contiene lo siguiente (lo que cabe esperar que a):
jvm 1 | 2010-11-04 13:03:39 INFO [p-759477796-118] - o.s.n.p.m.m.M2Repos~ - Storing of item releases:/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar is forbidden by Maven Repository policy. Because releases is a RELEASE repository
jvm 1 | 2010-11-04 13:03:39 ERROR [p-759477796-118] - o.s.n.r.ContentPlex~ - Got exception during processing request "PUT http://localhost:8081/nexus/content/repositories/releases/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar": Storing of item releases:/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar is forbidden by Maven Repository policy. Because releases is a RELEASE repository
La versión 1.0.0-artefacto es instantánea, por lo que no. – imaginaryboy
Esta respuesta debería ser un comentario, creo –