Требуется ли указывать плагин Maven Surefire в pom.xml ?

#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, которую кто-либо использует для создания проекта.