2016-08-17 5 views
2

У меня есть большой проект с около 5000 тестовых случаев. При запуске mvn clean install он будет запускать цель test дважды (один как часть установки и второй раз как часть плагина surefire).Как я могу остановить maven от запуска TEST дважды?

Зачем ему во второй раз запускать test? И есть ли сила, чтобы заставить surefire использовать результаты цели test вместо повторного вызова собственного? Я вижу это как трату времени и ресурса машины, особенно в последнее время во втором раунде работы test вызвана ошибка сборки PermGen, и независимо от того, сколько кучи я закачиваю в бегун, он все еще умирает во втором раунде тестирования.

Это моя безошибочная конфигурация 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> 

Есть ли способ настроить плагин для улучшения машинных ресурсов ручки?

Вот полный профиль по умолчанию Maven, который запускается на выполнение:

<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

Вы пытались удалить часть исполнения? – Zelldon

+0

Пожалуйста, добавьте (обрезает) вывод 'mvn clean install', особенно строки, начинающиеся с' [INFO] --- maven-surefire-plugin' - это должно помочь отслеживать, когда и сколько раз выполняется плагин. –

+0

Он работает только один раз, у вас есть другие плагины? – ravthiru

ответ

2

Я думаю <execution> в вашей pom.xml вызывает 2-й тестовый прогон. Maven видит в этом еще одну цель выполнить в дополнение к цели по умолчанию на этапе тестирования.

С maven-surefire-plugin - это плагин, используемый по умолчанию в Maven для тестовой фазы, вам нужно только предоставить часть <configuration> за пределами <execution>. Измените pom.xml, как указано ниже

<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

Это правильно, потому что maven-surefire-plugin по умолчанию уже привязан к жизненному циклу. Лучше всего настроить конфигурацию через pluginManagement, а не в build .. – khmarbaise

+0

@Rocherlee Пробовал, что тоже не работал. Все еще вызываю ТЕСТЫ дважды. – DhafirNz