java - plugin - maven deploy artifactory
Cómo evitar que Maven/Artifactory mantenga instantáneas con marcas de tiempo (6)
Debido a consideraciones de espacio en el disco, me gustaría mantener solo una versión de cualquier instantánea en mi repositorio. En lugar de mantener varias versiones con sufijos de marca de tiempo
por ejemplo, ecommerce-2.3-20090806.145007-1.ear
¿Cómo puedo configurar esto? ¿Es esta una configuración de compilación o configuración de repositorio (Artifactory)
¡Gracias!
Artifactory puede limpiar viejas instantáneas únicas. Sin embargo, hemos encontrado que las instantáneas únicas no son útiles con el fin de rastrear dependencias o revertir a una versión específica. Hay mejores alternativas para hacer esto, que son más limpias y más confiables. Es por eso que Artifactory por defecto prefiere instantáneas no únicas, y esta política puede ser controlada de forma centralizada (que es exclusiva de Artifactory). Puede leer más sobre esto, así como la función de limpieza automática here .
El uso de instantáneas no únicas no es una buena forma de proceder. En su lugar, obtenga un administrador de repositorio que pueda limpiar las instantáneas y configúrelo para mantener el espacio libre en el disco. Tener las instantáneas con marca de tiempo hace que sea mucho más fácil rastrear los problemas, ya que puede ver fácilmente qué versión realmente se está utilizando.
La forma más sencilla (y recommended ) es utilizar instantáneas no únicas. Si debe utilizar instantáneas únicas, puede hacerlo en Artifactory especificando la propiedad <maxUniqueSnapshots> en la definición <localRepository> en artifactory.config.xml
Por ejemplo:
<localRepository>
<key>snapshots</key>
<blackedOut>false</blackedOut>
<handleReleases>false</handleReleases>
<handleSnapshots>true</handleSnapshots>
<maxUniqueSnapshots>1</maxUniqueSnapshots>
<includesPattern>**/*</includesPattern>
<snapshotVersionBehavior>non-unique</snapshotVersionBehavior>
</localRepository>
Como referencia, puede hacer esto en Nexus (a través de la interfaz de usuario) configurando un servicio programado , le permite especificar el número mínimo a retener, el período máximo para retenerlos, y si se debe eliminar la instantánea si hay una versión de lanzamiento. desplegado.
NO funcionará en Maven 3 como se cita a continuación por Apache
It''s not recommended to use non-unique snapshots since they lead to non-reproducible builds. The main use case for these was to save disk space in the repository, but this is best handled by scheduling a periodic snapshot removal task to keep the number of versions down
TENGA EN CUENTA QUE ESTA FUNCIÓN / CAPACIDAD SE HA RETIRADO EN MAVEN 3.0
Solo agrega algo a mi propia pregunta:
Añadiendo
<distributionManagement>
...
<snapshotRepository>
...
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
...
</distributionManagement>
A mi padre pom también contribuyó a la solución de esto.
Ver:
http://i-proving.com/space/Jessamyn+Smith/blog/2008-06-16_1
Para modificar la configuración única en el repositorio en Artifactory (inicie sesión como administrador) y seleccione editar en el repositorio relevante: captura de pantalla aquí:
http://wiki.jfrog.org/confluence/display/RTF/Understanding+Repositories
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>remove-old-artifacts</id>
<phase>package</phase>
<goals>
<goal>remove-project-artifact</goal>
</goals>
<configuration>
<removeAll>true</removeAll><!-- When true, remove all built artifacts including all versions. When false, remove all built artifacts of this project version -->
</configuration>
</execution>
</executions>
</plugin>