我有一个pom.xml
文件,我评论了一个依赖项和一个插件。在此之后我刷新并重新进口,但无论如何插件都能正常工作。我无法理解为什么,因为pom.xml
中没有。
实际上我尝试更改Surefire插件的输出目录,但它始终是target / surefire。
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>TEST</groupId>
<artifactId>TEST</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<!--<org.apache.maven.surefire.version>2.19.1</org.apache.maven.surefire.version>-->
</properties>
<!--<reporting>-->
<!--<plugins>-->
<!--<plugin>-->
<!--<groupId>org.apache.maven.plugins</groupId>-->
<!--<artifactId>maven-surefire-report-plugin</artifactId>-->
<!--<version>2.19.1</version>-->
<!--</plugin>-->
<!--</plugins>-->
<!--</reporting>-->
<dependencies>
<!--<dependency>-->
<!--<groupId>org.apache.maven.surefire</groupId>-->
<!--<artifactId>surefire</artifactId>-->
<!--<version>${org.apache.maven.surefire.version}</version>-->
<!--<type>pom</type>-->
<!--</dependency>-->
</dependencies>
</project>
答案 0 :(得分:2)
对这个问题存在一些误解。我们来看看吧。
因为<dependency>
对插件的执行完全没有影响。这用于声明项目所依赖的内容,以便编译并运行它。它与您的项目的实际构建过程是分开的,该过程由Maven启动并调用几个插件来执行某些任务,例如执行实际编译或复制文件等。
解释依赖于build lifecycles的存在。简而言之,生命周期由几个阶段组成,其中包含插件目标。可能存在多个生命周期,但default
是生命周期,通常用于管理项目的打包和部署。例如,阶段是compile
,表示项目源编译的阶段,或package
表示项目被打包成可交付成果的阶段,或{{1} }表示项目的单元测试。
而且,默认情况下,several plugins已绑定到test
生命周期的各个阶段(取决于打包)。你会注意到:
default
:test
这意味着,在surefire:test
生命周期的test
阶段(针对特定包装),将调用目标default
(另请参阅the documentation) 。这就是您在此处看到的内容:maven-surefire-plugin
,其前缀为surefire:test
并在上面使用,其目标是test
,其目的是运行项目的测试类。
还有第二个考虑因素。上面的解释是指在您的POM的surefire
元素中声明的build plugins。您注释掉的实际上是<reporting>
section,其中包含为项目生成网站时调用的报告插件。
实际上我尝试更改surefire插件的输出目录
您可以通过配置<build><plugins><plugin>
的{{3}}来执行此操作,默认为maven-surefire-plugin
。这看起来像你的情况:
target/surefire-reports
注意如何在<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">
<build>
...
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<reportsDirectory>target/someDirectory</reportsDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
内部配置构建插件。你可以省略<build>
,这是默认值。
最佳做法是在构建期间生成的所有文件(如Surefire报告)都放在<groupId>org.apache.maven.plugins</groupId>
内,或者更一般地说,放在构建目录中(可以使用通用中的target
属性获取方式)。