Como parar Maven / Artifactory de manter Snapshots com timestamps
-
12-09-2019 - |
Pergunta
Devido a considerações de espaço em disco que eu gostaria de sempre apenas manter uma versão de qualquer instantâneo no meu repositório. Ao invés de manter várias versões com timestamp sufixos
por exemplo. ecommerce-2.3-20090806.145007-1.ear
Como posso configurar isso? É este um ambiente de construção ou repositório (Artifactory) definindo
Obrigado!
Solução
A maneira mais simples (e recomendado ) é usar instantâneos não-exclusivo . Se você deve usar instantâneos exclusivos, você pode fazer isso em Artifactory especificando os
Por exemplo:
<localRepository>
<key>snapshots</key>
<blackedOut>false</blackedOut>
<handleReleases>false</handleReleases>
<handleSnapshots>true</handleSnapshots>
<maxUniqueSnapshots>1</maxUniqueSnapshots>
<includesPattern>**/*</includesPattern>
<snapshotVersionBehavior>non-unique</snapshotVersionBehavior>
</localRepository>
Para referência, você pode fazer isso em Nexus (através da UI) através da criação de um serviço regular de , ele permite que você especifique o número mínimo de reter, o prazo máximo para retê-los para, e se para remover o snapshot se uma versão de lançamento é implantado.
Outras dicas
Note que esta característica / capacidade foi removido em PERITO 3.0
Basta adicionar algo à minha própria pergunta:
Adicionando
<distributionManagement>
...
<snapshotRepository>
...
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
...
</distributionManagement>
para o meu pai pom também contribuiu para a solução deste.
Veja:
http://i-proving.com/space / Jessamyn + Smith / blog / 2008-06-16_1
Para alterar as configurações originais no repositório no Artifactory - faça login como um administrador - e selecione Editar no repo relevante - Screenshot aqui:
http://wiki.jfrog.org/confluence/display/RTF / Entendimento + Repositórios
Artifactory pode limpar instantâneos únicos velhos. No entanto, descobrimos instantâneos únicos a ser não-útil para o propósito de rastrear dependências ou rolamento de volta para uma versão específica. Existem melhores alternativas para fazer isso, que são mais limpo e mais confiável. É por isso que os padrões Artifactory a preferir instantâneos não-exclusivos, e esta política pode ser centralmente controlada (que é exclusivo para Artifactory). Você pode ler mais sobre isto, assim como o recurso de auto-limpeza aqui .
<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>
Usando instantâneos não-exclusivos não é um bom caminho a percorrer. Em vez de obter um gestor de repositório que pode limpar instantâneos e configure que para manter espaço em disco para baixo. Tendo os instantâneos timestamped torna muito mais fácil de rastrear problemas desde que você pode ver facilmente qual versão realmente está sendo usado.
não funcionará no Maven 3, uma vez que foi citado pela Apache abaixo
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