5

J'ai utilisé maven2 et hudson pendant un certain temps pour faire mon intégration continue, mais je trouve que Eclipse et Maven ne jouent pas bien ensemble. Bien sûr, il y a un plugin, mais il est grincheux d'écraser le projet maven en quelque chose que l'éclipse aime et les temps de construction et le test unitaire sont trop longs. J'envisage de revenir à un projet d'éclipse pure, sans fourmi et sans maven. Avec le plugin infinitest et l'agent JavaRebel possible, cela me donnerait un cycle de build-deploy-test très rapide. Cependant, j'aimerais toujours avoir l'automatisme et les tests, donc:Comment utiliser une intégration continue avec un projet Eclipse?

Comment utiliser une intégration continue avec un projet Eclipse?

Existe-t-il un moyen de ligne de commande pour le faire?

Y a-t-il un serveur de construction qui le supporte déjà en mode natif?

Répondre

2

J'ai réussi à trouver une bonne solution.

Dans Eclipse-> Propriétés du projet-> Chemin de construction Java-> Source, décochez la case: "Autoriser la sortie dossiers pour la source dossiers "

Cela permettra à votre projet d'avoir plus d'un chemin de sortie et Eclipse commencera alors à signaler que les classes de test font partie du chemin de la classe. Infinitest le trouve maintenant et commence à courir des tests!

Tout ce que je ne faisais utiliser le plugin Eclipse et Maven officiel ajouter à mon POM

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.5</version> 
     <!-- <scope>provided</scope> --> 
    </dependency> 

    <dependency> 
     <groupId>org.infinitest</groupId> 
     <artifactId>infinitest</artifactId> 
     <scope>test</scope> 
     <version>4.0</version> 
    </dependency> 

</dependencies> 
4

Oui, le plugin Eclipse Maven2 est de la merde pour l'instant. Mais je vous suggère de vous y attarder, il y a beaucoup d'avantages à utiliser Maven2, donc ça s'équilibre. Ce que nous faisons, c'est que nous utilisons Eclipse pour développer et utiliser Maven uniquement pour gérer les dépendances. Tout le reste est fait en exécutant "mvn" sur la ligne de commande. Nous conservons des tests dans leurs propres projets de test d'intégration (...) et nous avons un serveur d'intégration continue à construire en 2 phases, d'abord construire le code actuel, et ensuite construire et exécuter les projets -itest. (Première passe (pur build) est généralement très rapide, et les tests d'intégration construire (avec exécution de tests) prend généralement un certain temps.)

ligne de commande est ici pour faire exécuter des tests mvn: mvn -o verify -Ditest

de Bien sûr, vous devez définir le profil 'de iTest' dans votre pom parent: Dites, comme ceci:

<profiles> 
    <profile> 
    <id>integration-test</id> 
    <activation> 
     <property> 
     <name>itest</name> 
     </property> 
    </activation> 
    <build> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <executions> 
      <execution> 
       <id>itest</id> 
      </execution> 
      </executions> 
      <configuration> 
      <testSourceDirectory>src/main</testSourceDirectory> 
      <testClassesDirectory>target/classes</testClassesDirectory> 
      <forkMode>once</forkMode> 
      </configuration> 
     </plugin> 
     </plugins> 
    </build> 
    </profile> 
</profiles> 
+0

Idée intéressante, je ne l'avais pas pensé à le diviser en deux projets. Je suis un grand fan de maven, mais j'ai remarqué que le cycle de construction/test prend un peu de temps. Cette idée pourrait accélérer un peu les choses, je suppose. –

0

J'ai eu assez bon succès avec Eclipse + Ant avec CruiseControl. Si vous voulez de l'automatisation, vous aurez probablement besoin de plus que de la pure Eclipse. CruiseControl peut extraire automatiquement une copie de votre projet du contrôle de la source, la compiler, exécuter des tests, puis mettre à jour une application Web avec les résultats. C'était assez bon dernier je l'ai utilisé, mais c'était il y a longtemps maintenant.

Questions connexes