#java #maven #maven-surefire-plugin
#java #maven #maven-surefire-plugin
Вопрос:
Почему это pom.xml может ли запускаться mvn test
без указанного плагина maven surefire?
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lester</groupId>
<artifactId>junit-basics</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>junit-basics</name>
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<junit.jupiter.version>5.4.0</junit.jupiter.version>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
В чем разница между помещением плагина в pom.xml и не ставя его?
Комментарии:
1. Возможно, я ошибаюсь, но я помню, что
maven-surefire-plugin
он автоматически запускает ваши модульные тесты (дляpackage
), если они выбраны как часть цикла сборки, тогда как без этого вам нужно было бы вручную указатьtest
цель самостоятельно при запуске maven.
Ответ №1:
Если вы не укажете maven-surefire-plugin в своем pom, ваша сборка получит свою версию, указанную в Maven, см. https://maven.apache.org/ref/3.6.3/maven-core/default-bindings.html Эти версии некоторое время не обновлялись, чтобы гарантировать, что обновление Maven не повлияет на вашу сборку из-за другой версии плагина. Скорее всего, эти версии будут обновлены в следующем крупном выпуске Maven. Так что все зависит от срока службы вашего проекта и от того, является ли он частным проектом. Если он имеет длительный срок службы, лучше привязать эти плагины к определенной версии, чтобы вы не зависели от версии Maven, которую кто-либо использует для создания проекта.