2010-11-22 2 views
0

Lorsque nous construisons un projet Maven sans faire mvn clean, nous avons parfois des "erreurs vaudou" comme NoSuchMethodError. Je crois que ceux-ci sont causés par le déplacement/renommer des fichiers.Construire dans Maven sans nettoyage

Je ne souhaite pas utiliser l'option de nettoyage dans l'élément de configuration, car le processus de génération prend beaucoup plus de temps. Y a-t-il une autre alternative?

Répondre

2

Vous devez toujours utiliser clean dans une construction CI. Les builds de CI doivent être reproductibles et cela nécessite de partir de zéro! Et à propos du processus qui prend plus de temps: tout l'intérêt d'utiliser CI (l'un des nombreux) est que vous pouvez continuer à travailler pendant qu'il fonctionne, cela ne devrait donc pas poser de problème.

Mais ce que je veux faire est d'utiliser plusieurs couches de CI par projet:

  • Un premier emploi compile et exécute des tests de base *, cette construction devrait prendre moins de 5 minutes
  • si cela réussit , un deuxième emploi exécute tous les tests *, des mesures de code, javadocs etc
  • si cela réussit un troisième emploi déploie la construction à un serveur de test

(Ou vous pouvez laisser le premier déclencheur d'emploi à la fois la deuxième et troisième emploi à la fois)

* Vous pouvez mettre en œuvre les quelques tests/toutes les fonctionnalités de tests en configuration du plugin Maven Surefire différemment par profil)

+0

Il y a un problème lorsque 40 personnes sont engagées dans le même coffre. Vous voulez obtenir des commentaires sur qui a brisé le CI aussi vite que possible, sur le plus petit delta possible. Aujourd'hui, certaines de nos constructions prennent 20-30 minutes, et nous essayons de les raccourcir comme nous le pouvons. – ripper234

+1

Je dirais que 40 personnes est trop grande pour une base de code. Divisez le projet en modules séparés (c'est probablement déjà le cas, je l'espère) et exécutez des tâches CI indépendamment pour un ou plusieurs de ces modules. Mais ne pas utiliser propre n'est jamais la réponse. –

0

Nous avons trois objectifs de construction:

  • Intégration continue: Construit sans effectuer de nettoyage et exécute uniquement les tests identifiés par Clover. Cela fonctionne après chaque commit. En cas de succès, il se déploie sur le serveur de test.

  • Nightly: Nettoie et exécute chaque test. Cela fonctionne tous les soirs. En cas de succès, il se déploie sur le serveur de test.

  • Release: Identique à Nightly plus crée une étiquette de contrôle de source. Exécuter manuellement

La construction nocturne est plus fiable dans la mesure où une construction propre est effectuée. Cependant, la construction de CI est plus rapide, ce qui signifie que le feedback est plus rapide en de telles occasions.

Il existe un problème sous-jacent ici avec le temps de construction, mais il s'agit au moins d'un problème lorsque vous recherchez des méthodes plus permanentes pour y remédier.

Questions connexes