2016-08-17 1 views
2

J'ai un gros projet avec environ 5000 cas de test. Lorsqu'il exécute mvn clean install, il exécute l'objectif test deux fois (un dans le cadre de l'installation et la seconde fois dans le cadre du plug-in surefire). Pourquoi doit-il exécuter le test pour la deuxième fois?Comment puis-je empêcher maven d'exécuter TEST deux fois?

Et est-il absent pour forcer surefire à utiliser les résultats de but test au lieu de l'invoquer de nouveau? Je vois cela comme une perte de temps et de ressources machine, surtout récemment le deuxième tour de test a causé une erreur de construction PermGen et peu importe combien de tas je pomper dans Maven Runner il meurt encore dans la deuxième ronde de test.

Ceci est ma configuration infaillible de pluging:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.18.1</version> 
    <executions> 
     <execution> 
     <id>default-test</id> 
     <phase>test</phase> 
     <goals> 
      <goal>test</goal> 
     </goals> 
     <configuration> 
      <parallel>classes</parallel> 
      <threadCount>3</threadCount> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 

est-il un moyen de modifier le plugin pour mieux les ressources de la machine poignée?

Voici le profil complet par défaut Maven qui est exécuté:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.0.2</version> 
      <configuration> 
       <archive> 
        <manifest> 
         <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
        </manifest> 
        <manifestEntries> 
         <Build-Number>${build.number}</Build-Number> 
         <Job-Name>${job.name}</Job-Name> 
         <Build-Url>${build.url}</Build-Url> 
         <Git-Commit>${git.commit}</Git-Commit> 
         <Git-Branch>${git.branch}</Git-Branch> 
         <Timestamp>${maven.build.timestamp}</Timestamp> 
         <StyleGuide-Version>${styleguide.version}</StyleGuide-Version> 
        </manifestEntries> 
       </archive> 
       <warName>pss</warName> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>com.cj.jshintmojo</groupId> 
      <artifactId>jshint-maven-plugin</artifactId> 
      <version>1.3.0</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>lint</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <options>maxparams:5,camelcase,eqeqeq,forin,immed,latedef,noarg,noempty,nonew,expr</options> 
       <directories> 
        <directory>src/main/webapp/js/page</directory> 
       </directories> 
       <excludes> 
        <exclude>src/main/webapp/js/page/marketingPreferences.js</exclude> 
        <exclude>src/main/webapp/js/page/changeCarParkingDetails.js</exclude> 
        <exclude>src/main/webapp/js/page/angularjs-app.js</exclude> 
        <exclude>src/main/webapp/js/page/content-cover.js</exclude> 
        <exclude>src/main/webapp/js/page/amendmentConfirm.js</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.lesscss</groupId> 
      <artifactId>lesscss-maven-plugin</artifactId> 
      <version>1.3.3</version> 
      <executions> 
       <execution> 
        <id>bingleless</id> 
        <configuration> 
         <sourceDirectory>${project.basedir}/src/main/webapp/app-resources/</sourceDirectory> 
         <outputDirectory>${project.basedir}/src/main/webapp/app-resources/</outputDirectory> 
         <includes> 
          <include>**\/policy-self-service\/**\/*pss-sg.less</include> 
         </includes> 
         <compress>true</compress> 
        </configuration> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>net.alchim31.maven</groupId> 
      <artifactId>yuicompressor-maven-plugin</artifactId> 
      <version>1.1</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>compress</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <excludes> 
        <exclude>**/*.min.js</exclude> 
        <exclude>**/*.min.css</exclude> 
        <exclude>**/style-guide/**</exclude> 
        <exclude>**/generated/**</exclude> 
        <exclude>**/app-resources/common/**</exclude> 
        <exclude>**/app-resources/bower_components/**</exclude> 
        <exclude>**/app-resources/policy-self-service/**</exclude> 
       </excludes> 
       <nosuffix>true</nosuffix> 
       <jswarn>false</jswarn> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <configuration> 
       <logViolationsToConsole>true</logViolationsToConsole> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>${maven-surefire-plugin.version}</version> 
      <configuration> 
       <parallel>classes</parallel> 
       <threadCount>3</threadCount> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-report-plugin</artifactId> 
      <version>${maven-surefire-report-plugin.version}</version> 
      <executions> 
       <execution> 
        <phase>install</phase> 
        <goals> 
         <goal>report-only</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
+0

Avez-vous essayé d'enlever la pièce d'exécution? – Zelldon

+0

Veuillez ajouter (tronqué) la sortie de 'mvn clean install', en particulier les lignes commençant par' [INFO] --- maven-surefire-plugin' - qui devrait aider à savoir quand et combien de fois le plugin est exécuté. –

+0

Il ne fonctionne qu'une fois, avez-vous d'autres plugins? – ravthiru

Répondre

2

Je pense que le <execution> dans votre pom.xml provoque le 2ème essai. Maven le voit comme un autre objectif à exécuter en plus de l'objectif par défaut dans la phase de test.

Puisque maven-surefire-plugin est un plugin utilisé par défaut dans Maven pour la phase de test, il vous suffit de fournir la partie <configuration> en dehors de <execution>. Modifiez votre pom.xml comme ci-dessous

<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.18.1</version> 
    <configuration> 
     <parallel>classes</parallel> 
     <threadCount>3</threadCount> 
    </configuration> 
    </plugin> 
</plugins> 
+0

Ceci est correct car maven-surefire-plugin est par défaut déjà lié au cycle de vie. Le mieux est de donner la configuration via pluginManagement au lieu de dans la construction .. – khmarbaise

+0

@ Rocherlee J'ai essayé cela, n'a pas fonctionné non plus. Appelez encore TESTS deux fois. – DhafirNz