Maintenant que maven-3 n'a déposer, pour le <uniqueVersion>false</uniqueVersion> pour l'instantané des artefacts, il semble que vous avez vraiment besoin d'utiliser horodaté des INSTANTANÉS. Surtout m2eclipse, qui n'utiliser maven 3 en interne semble être touchés avec elle, mise à jour-les instantanés ne fonctionne pas lorsque les captures d'écran ne sont pas uniques.
Il semblait le plus pratique avant de définir tous les clichés de uniqueVersion=false
Maintenant, il semble qu'aucun gros problème pour passer à la horodaté version, après tout, ils sont gérés par une centrale nexus référentiel, qui est capable de supprimer les vieux clichés à intervalles réguliers.
Le problème locales sont les stations de travail de développeur. Leur référentiel local rapidement ne poussent très grande unique en des clichés.
Comment faire face à ce problème ?
Droit maintenant, je vois ce qui suit solutions possibles:
- Demander aux développeurs de purger le référentiel à intervalles réguliers (ce qui conduit à beaucoup de fustration, il faut du temps pour les supprimer et même plus de temps à télécharger tout ce qui est nécessaire)
- Configurer un script qui ne supprimer toutes INSTANTANÉ de répertoires à partir d'un référentiel local et demandez aux développeurs d'exécuter le script, de temps à autre (mieux que le premier, mais encore prend un certain temps à s'exécuter et télécharger les dernières captures d'écran)
- l'utilisation de la dépendance:purge-local-dépôt plugin (Ne avoir des problèmes lorsque vous exécutez à partir de l'éclipse, due à l'ouverture des fichiers, doit être exécuté à partir de chaque projet)
- configurer nexus sur chaque poste de travail et mis en place un travail pour nettoyer les vieux clichés (le meilleur résultat, mais je ne veux pas conserver 50+ nexus serveurs, plus la mémoire est toujours serré sur les stations de travail de développeur)
- arrêter d'utiliser des INSTANTANÉS à tous
Quelle est la meilleure façon de garder votre dépôt local de remplir votre espace de disque dur ?
Mise à jour:
De vérifier la beaviour et à donner plus d'info j'ai installé un petit serveur nexus, la construction de deux projets (a et b) et d'essayer:
un:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.glauche</groupId>
<artifactId>a</artifactId>
<version>0.0.1-SNAPSHOT</version>
<distributionManagement>
<snapshotRepository>
<id>nexus</id>
<name>nexus</name>
<url>http://server:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
</project>
b:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.glauche</groupId>
<artifactId>b</artifactId>
<version>0.0.1-SNAPSHOT</version>
<distributionManagement>
<snapshotRepository>
<id>nexus</id>
<name>nexus</name>
<url>http://server:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>nexus</id>
<name>nexus</name>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>http://server:8081/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>de.glauche</groupId>
<artifactId>a</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
Maintenant, lorsque j'utilise maven et exécuter "déployer" à la "une", je vais avoir
a-0.0.1-SNAPSHOT.jar
a-0.0.1-20101204.150527-6.jar
a-0.0.1-SNAPSHOT.pom
a-0.0.1-20101204.150527-6.pom
dans le référentiel local. Avec un nouveau timestamp version à chaque fois que je lance le déploiement de la cible. La même chose se passe lorsque j'essaie de mettre à jour les Instantanés de la nexus serveur (fermer "un" Projet, de le supprimer à partir du référentiel local, construire le "b")
Dans un environnement où beaucoup de clichés get build (pensez à un serveur hudson ...), les locaux reposioty se remplit avec les anciennes versions rapide
Mise à jour 2:
Pour tester comment et pourquoi cela est en échec, j'ai fait des tests un peu plus. Chaque test est exécuté contre tout propre (de/glauche obtient supprimer à partir de deux machines et nexus)
- mvn deploy avec maven 2.2.1 :
dépôt local sur Une machine qui ne contiennent snapshot.jar + snapshot-timestamp.jar
MAIS: un seul horodaté pot dans nexus, les métadonnées se lit comme suit:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>de.glauche</groupId>
<artifactId>a</artifactId>
<version>0.0.1-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20101206.200039</timestamp>
<buildNumber>1</buildNumber>
</snapshot>
<lastUpdated>20101206200039</lastUpdated>
</versioning>
</metadata>
- exécuter la mise à jour des dépendances (sur la machine B) dans m2eclipse (embedded m3 final) -> référentiel local snapshot.jar + snapshot-timestamp.jar :(
- exécutez le package objectif externe avec maven 2.2.1 -> référentiel local snapshot.jar + snapshot-timestamp.jar :(
Ok, à côté essayer avec maven 3.0.1 (après la suppression de toutes les traces de projet)
dépôt local sur la machine A l'air mieux, une seule non-datées jar
-
un seul horodaté pot dans nexus, les métadonnées se lit comme suit:
de.glauche un 0.0.1-INSTANTANÉ
<snapshot> <timestamp>20101206.201808</timestamp> <buildNumber>3</buildNumber> </snapshot> <lastUpdated>20101206201808</lastUpdated> <snapshotVersions> <snapshotVersion> <extension>jar</extension> <value>0.0.1-20101206.201808-3</value> <updated>20101206201808</updated> </snapshotVersion> <snapshotVersion> <extension>pom</extension> <value>0.0.1-20101206.201808-3</value> <updated>20101206201808</updated> </snapshotVersion> </snapshotVersions>
exécuter la mise à jour des dépendances (sur la machine B) dans m2eclipse (embedded m3 final) -> référentiel local snapshot.jar + snapshot-timestamp.jar :(
exécutez le package objectif externe avec maven 2.2.1 -> référentiel local snapshot.jar + snapshot-timestamp.jar :(
Donc, pour récapituler: Le "déploiement" de but en maven3 fonctionne mieux qu'en 2.2.1, le dépôt local sur la création de la machine a l'air bien. Mais, le récepteur se termine toujours avec beaucoup de timestamed versions ...
Ce que je fais mal ?
Mise à jour 3
J'ai aussi fait l'essai de divers autres configurations, tout d'abord remplacer le nexus avec artifactory -> même comportement. Ensuite, l'utilisation de linux maven 3 clients de télécharger les images à partir du gestionnaire de référentiel -> référentiel local a encore horodaté instantanés :(