Come impedire a Maven/Artifactory di conservare istantanee con timestamp
-
12-09-2019 - |
Domanda
Per motivi di spazio su disco, vorrei conservare sempre e solo una versione di qualsiasi snapshot nel mio repository.Piuttosto che mantenere più versioni con suffissi timestamp
per esempio.ecommerce-2.3-20090806.145007-1.ear
Come posso impostarlo?Si tratta di un'impostazione di build o di un'impostazione del repository (Artifactory).
Grazie!
Soluzione
Il più semplice (e consigliato ) modo è quello di utilizzare gli snapshot non univoci . Se è necessario utilizzare le istantanee uniche, è possibile farlo in Artifactory specificando la proprietà
Ad esempio:
<localRepository>
<key>snapshots</key>
<blackedOut>false</blackedOut>
<handleReleases>false</handleReleases>
<handleSnapshots>true</handleSnapshots>
<maxUniqueSnapshots>1</maxUniqueSnapshots>
<includesPattern>**/*</includesPattern>
<snapshotVersionBehavior>non-unique</snapshotVersionBehavior>
</localRepository>
Come riferimento si può fare questo in Nexus (tramite interfaccia utente) attraverso la creazione di un servizio di linea , permette di specificare il numero minimo di mantenere, il periodo massimo di conservare loro per, e se rimuovere l'istantanea se una versione di rilascio viene distribuito.
Altri suggerimenti
SI NOTI CHE QUESTA FUNZIONE/FUNZIONE È STATA RIMOSSA IN MAVEN 3.0
Aggiungi semplicemente qualcosa alla mia domanda:
Aggiunta
<distributionManagement>
...
<snapshotRepository>
...
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
...
</distributionManagement>
ai miei genitori pom ha contribuito anche alla soluzione di questo.
Vedere:
http://i-proving.com/space/Jessamyn+Smith/blog/2008-06-16_1
Per modificare le impostazioni univoche sul repository in Artifactory, accedi come amministratore e seleziona Modifica sul repository pertinente: screenshot qui:
http://wiki.jfrog.org/confluence/display/RTF/Understanding+Repositories
Artifactory può pulire vecchie istantanee uniche. Tuttavia, abbiamo trovato le istantanee uniche ad essere non utile ai fini di rintracciare dipendenze o rolling-back a una versione specifica. Ci sono alternative migliori per fare questo, che sono più puliti e più affidabili. Questo è il motivo di default Artifactory a preferire le istantanee non univoci, e questa politica può essere centrale controllata (che è unica per Artifactory). Si può leggere di più su questo, così come la funzione di auto-pulizia qui .
<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>
Utilizzando istantanee non univoci non è un buon modo per andare. Invece ottenere un repository manager in grado di ripulire istantanee e configurare che per mantenere lo spazio su disco verso il basso. Avere le istantanee timestamped rende molto più facile rintracciare i problemi dal momento che si può facilmente vedere quale versione effettivamente in uso.
non funziona in Maven 3 come è stato citato da Apache seguente
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