Как я могу остановить maven от запуска TEST дважды?
У меня большой проект с около 5000 тестовых случаев. При запуске mvn clean install
он дважды запускает test
цель (один из них является частью установки и второй раз является частью плагина surefire
).
Зачем нужно повторять test
во второй раз? И есть ли далеко, чтобы заставить surefire
использовать результаты результатов test
вместо повторного вызова его собственного? Я рассматриваю это как пустую трату времени и ресурса машины, особенно в последнее время второй раунд запуска test
вызвал PermGen
сборки PermGen
и независимо от того, сколько кучи я закачиваю в бегун, он все еще умирает во втором раунде тестирования.
Это моя верная конфигурация подключения:
<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>
Ответы
Ответ 1
Я думаю, что <execution>
в вашем pom.xml
вызывает 2-й тестовый прогон. Maven видит в этом еще одну цель выполнить в дополнение к цели по умолчанию на этапе тестирования.
Поскольку maven-surefire-plugin
- это плагин, используемый по умолчанию в Maven для этапа тестирования, вам нужно предоставить только часть <configuration>
вне <execution>
. Измените свой pom.xml
как 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>