2009-08-07 4 views
18

A causa delle considerazioni sullo spazio su disco, mi piacerebbe solo tenere sempre una versione di qualsiasi istantanea nel mio repository. Piuttosto che mantenere più versioni con suffissi timestampCome impedire a Maven/Artifactory di mantenere istantanee con data e ora

ad es. ecommerce-2.3-20090806.145007-1.ear

Come posso configurarlo? Si tratta di un'impostazione di build o repository (Artifactory)

Grazie!

+0

Potete trovare ans sul seguente link [http://stackoverflow.com/questions/4275466/how-do- si-deal-with-maven-3-timestamp-snapshot-efficiente/38.600.178 38.600.178 #] (http://stackoverflow.com/questions/4275466/how-do-you-deal-with-maven-3-timestamped-snapshots -efficiently/38600178 # 38600178) –

risposta

26

Il modo più semplice (e recommended) consiste nell'utilizzare istantanee non univoche. Se è necessario utilizzare le istantanee uniche, è possibile farlo in Artifactory specificando i <maxUniqueSnapshots> proprietà sul <mercurial.localrepo.localrepository> definizione artifactory.config.xml

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> 

Per riferimento si può effettuare ciò in Nexus (tramite l'interfaccia utente) impostando uno scheduled service, consente di specificare il numero minimo da conservare, il periodo massimo in cui mantenerli e se rimuovere l'istantanea se viene distribuita una versione di rilascio.

+0

Grazie Rich - Artifactory sembra anche consentire di modificare questi valori attraverso il gui - non è troppo ben documentato! – Pablojim

+0

Se si dispone di un riferimento a qualsiasi documento pertinente, è possibile aggiungerlo alla risposta –

+2

utilizzando le istantanee non univoche è generalmente una cattiva pratica in quanto rende molto difficile rintracciare i conflitti nelle macchine sviluppatore. È molto meglio mantenere i timestamp e usare Nexus per ripulire le vecchie istantanee. –

10

presente che questa funzione/CAPACITA 'è stata rimossa in MAVEN 3.0

Basta aggiungere qualcosa alla mia domanda:

Aggiunta

<distributionManagement> 
    ... 
    <snapshotRepository> 
     ... 
     <uniqueVersion>false</uniqueVersion> 
    </snapshotRepository> 
    ... 
</distributionManagement> 

al mio genitore pom anche contribuito alla soluzione di questo.

See:

http://i-proving.com/space/Jessamyn+Smith/blog/2008-06-16_1

Per modificare le impostazioni uniche sul repository in Artifactory - accedere come amministratore - e selezionare Modifica sul repo rilevante - screenshot qui:

http://wiki.jfrog.org/confluence/display/RTF/Understanding+Repositories

+1

Questo comportamento è cambiato in Maven 3. Vedi: [Distribuzioni snapshot non univoco] (https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html#Maven3.xCompatibilityNotes-NonuniqueSnapshotDeployments) – metasim

0

L'utilizzo di snapshot non univoci non è un buon metodo. Prendi invece un gestore di repository in grado di ripulire gli snapshot e configurarlo per mantenere lo spazio sul disco. Avere le istantanee con data e ora rende molto più facile rintracciare i problemi poiché si può facilmente vedere quale versione viene effettivamente utilizzata.

4

L'artefatto può eliminare vecchie istantanee univoche. Tuttavia, abbiamo riscontrato che le istantanee univoche non sono utili allo scopo di rilevare le dipendenze o eseguire il rollback su una versione specifica. Ci sono alternative migliori per farlo, che sono più pulite e più affidabili. Questo è il motivo per cui Artifactory utilizza preferibilmente snapshot non univoci e questo criterio può essere centralmente controllato (che è univoco per Artifactory). Ulteriori informazioni su questo argomento e sulla funzione di pulizia automatica here.

1
<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> 
+2

Questo pulisce solo il repository locale, non è artefatto ... – mglauche

0

non funziona in Maven 3 come è stato citato da Apache sotto

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