2009-08-07 6 views
18

En raison de l'espace disque requis, je souhaite conserver uniquement une version de tout instantané dans mon référentiel. Plutôt que de conserver plusieurs versions avec des suffixes d'horodatageComment empêcher Maven/Artifactory de conserver des instantanés avec des horodateurs

par exemple. ecommerce-2.3-20090806.145007-1.ear

Comment puis-je configurer ceci? S'agit-il d'un paramètre de construction ou d'un référentiel (Artifactory)

Merci!

+0

Vous pouvez trouver le lien suivant ans [http://stackoverflow.com/questions/4275466/how-do- vous-deal-avec-maven-3-timestamped-snapshots-efficacement/38600178 # 38600178] (http://stackoverflow.com/questions/4275466/how-do-you-deal-with-maven-3-timestamped-snapshots -efficiently/38600178 # 38600178) –

Répondre

26

La méthode la plus simple (et recommended) consiste à utiliser des instantanés non uniques. Si vous devez utiliser des clichés uniques, vous pouvez le faire en Artifactory en spécifiant les <maxUniqueSnapshots> propriété sur la <localRepository> définition artifactory.config.xml

Par exemple:

<localRepository> 
    <key>snapshots</key> 
    <blackedOut>false</blackedOut> 
    <handleReleases>false</handleReleases> 
    <handleSnapshots>true</handleSnapshots> 
    <maxUniqueSnapshots>1</maxUniqueSnapshots> 
    <includesPattern>**/*</includesPattern> 
    <snapshotVersionBehavior>non-unique</snapshotVersionBehavior> 
</localRepository> 

Pour référence, vous pouvez faites-le dans Nexus (via l'interface utilisateur) en configurant un scheduled service, il vous permet de spécifier le nombre minimum à conserver, la période maximale à retenir pour les conserver et si vous souhaitez supprimer l'instantané si une version est déployée.

+0

Merci Rich - Artifactory semble aussi vous permettre de changer ces valeurs à travers le gui - ce n'est pas trop bien documenté! – Pablojim

+0

Si vous avez une référence à des documents pertinents, pouvez-vous l'ajouter à votre réponse –

+2

en utilisant les instantanés non-unique est généralement une mauvaise pratique car il est très difficile de tracer les conflits jusqu'aux machines de développement. Il vaut mieux conserver les horodatages et utiliser Nexus pour nettoyer les anciens clichés. –

10

NOTE QUE CE DOSSIER/CAPACITES A ÉTÉ RETIRÉ Maven 3.0

Il suffit d'ajouter quelque chose à ma propre question:

Ajout

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

à mes parents pom a également contribué à la solution de cela.

Voir:

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

Pour modifier les paramètres uniques sur le référentiel dans Artifactory - se connecter en tant qu'administrateur - et sélectionnez modifier le repo concerné - capture d'écran ici:

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

+1

Ce comportement a changé dans Maven 3. Voir: [Nonunique Snapshot Deployments] (https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html#Maven3.xCompatibilityNotes-NonuniqueSnapshotDeployments) – metasim

0

L'utilisation d'instantanés non uniques n'est pas une bonne solution. Au lieu de cela, procurez-vous un gestionnaire de référentiel capable de nettoyer les instantanés et de le configurer pour réduire l'espace disque. Les instantanés horodatés facilitent le repérage des problèmes car vous pouvez facilement voir quelle version est réellement utilisée. Artifactory peut nettoyer les anciens instantanés uniques.

4

Cependant, nous avons trouvé des instantanés uniques non utiles dans le but de dépister des dépendances ou de revenir à une version spécifique. Il existe de meilleures alternatives pour ce faire, qui sont plus propres et plus fiables. C'est pourquoi Artifactory par défaut préfère les instantanés non uniques, et cette règle peut être centralisée (ce qui est propre à Artifactory). Vous pouvez en savoir plus à ce sujet, ainsi que la fonction de nettoyage automatique 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

Cela ne nettoierait que le référentiel local, non artificiel ... – mglauche

0

ne fonctionnera pas dans Maven 3 comme il a été cité par Apache ci-dessous

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 
Questions connexes