隐藏 maven "Running com.MyTest" 日志行
Hide maven "Running com.MyTest" log line
我在 mvn 输出中得到以下内容:
Running com.MyTest
Tests run: 1 , Failures: 0 , Errors: 0 , Skipped: 0 , Time elapsed: 0.02 sec - in com.MyTest
尽管有标志:
-Dsurefire.printSummary=false -Dsurefire.useFile=true
有没有办法隐藏第一行 - Running com.MyTest
?
更多信息
应该是无关紧要的,不过我也补充一下:
-Dlogback.configurationFile=/Users/me/logback.xml
logback.xml 包含:
<configuration>
<root level="OFF">
<appender-ref ref="STDOUT" />
</root>
</configuration>
pom.xml万无一失的配置
<project>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin}</version>
<configuration>
<includes>
<include>**/*Test.class</include>
</includes>
<parallel>classes</parallel>
<threadCount>10</threadCount>
<useFile>false</useFile>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>coverage-per-test</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>org.sonar.java.jacoco.JUnitListener</value>
</property>
</properties>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
为了不显示这一特定行,有必要不创建控制台记录器。 The code is creating this logger当下面方法returnstrue
:
private boolean shouldReportToConsole()
{
return isUseFile() ? isPrintSummary() : isRedirectTestOutputToFile() || isBriefOrPlainFormat();
}
再往下看,如果这个 returns true
,ConsoleReporter
is created and it will write that line when the tests are started.
的实例
所以要么:
- 你设置
useFile=true
(the default) and printSummary=false
,或者
- 您将
useFile=false
和 redirectTestOutputToFile=false
(the default) and reportFormat
设置为不是 "brief"
或 "plain"
的值(默认情况下,它是 "brief"
)。
因此,根据您对 -Dsurefire.printSummary=false -Dsurefire.useFile=true
的配置,它应该可以工作,并且该行不应该出现在控制台中,也不应该出现在输出文件中。您的问题是 maven-surefire-plugin
的配置设置了 <useFile>false</useFile>
。 POM 中配置的任何值直接优先于您在命令行中设置的值。这是为了确保当 POM 定义一个值时,它不能被覆盖并有助于实现可重现的构建。
所以你可以做的是强制 reportFormat
的值不正确(既不是 "brief"
也不是 "plain"
),你会注意到 "Running "
行将不再发出。
虽然这有点笨拙。因此,另一种解决方案是定义 Maven 属性 并在命令行上覆盖 属性。在你的插件中,有:
<useFile>${surefire.plugin.useFile}</useFile>
并定义一个属性,默认为false
:
<properties>
<surefire.plugin.useFile>false</surefire.plugin.useFile>
</properties>
这样,构建的行为与以前相同。当您定义 -Dsurefire.plugin.useFile=true
时,您将覆盖 Maven 属性,这将确保 Surefire 启动 useFile
设置为 true
.
我在 mvn 输出中得到以下内容:
Running com.MyTest
Tests run: 1 , Failures: 0 , Errors: 0 , Skipped: 0 , Time elapsed: 0.02 sec - in com.MyTest
尽管有标志:
-Dsurefire.printSummary=false -Dsurefire.useFile=true
有没有办法隐藏第一行 - Running com.MyTest
?
更多信息
应该是无关紧要的,不过我也补充一下:
-Dlogback.configurationFile=/Users/me/logback.xml
logback.xml 包含:
<configuration>
<root level="OFF">
<appender-ref ref="STDOUT" />
</root>
</configuration>
pom.xml万无一失的配置
<project>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin}</version>
<configuration>
<includes>
<include>**/*Test.class</include>
</includes>
<parallel>classes</parallel>
<threadCount>10</threadCount>
<useFile>false</useFile>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>coverage-per-test</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>org.sonar.java.jacoco.JUnitListener</value>
</property>
</properties>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
为了不显示这一特定行,有必要不创建控制台记录器。 The code is creating this logger当下面方法returnstrue
:
private boolean shouldReportToConsole() { return isUseFile() ? isPrintSummary() : isRedirectTestOutputToFile() || isBriefOrPlainFormat(); }
再往下看,如果这个 returns true
,ConsoleReporter
is created and it will write that line when the tests are started.
所以要么:
- 你设置
useFile=true
(the default) andprintSummary=false
,或者 - 您将
useFile=false
和redirectTestOutputToFile=false
(the default) andreportFormat
设置为不是"brief"
或"plain"
的值(默认情况下,它是"brief"
)。
因此,根据您对 -Dsurefire.printSummary=false -Dsurefire.useFile=true
的配置,它应该可以工作,并且该行不应该出现在控制台中,也不应该出现在输出文件中。您的问题是 maven-surefire-plugin
的配置设置了 <useFile>false</useFile>
。 POM 中配置的任何值直接优先于您在命令行中设置的值。这是为了确保当 POM 定义一个值时,它不能被覆盖并有助于实现可重现的构建。
所以你可以做的是强制 reportFormat
的值不正确(既不是 "brief"
也不是 "plain"
),你会注意到 "Running "
行将不再发出。
虽然这有点笨拙。因此,另一种解决方案是定义 Maven 属性 并在命令行上覆盖 属性。在你的插件中,有:
<useFile>${surefire.plugin.useFile}</useFile>
并定义一个属性,默认为false
:
<properties>
<surefire.plugin.useFile>false</surefire.plugin.useFile>
</properties>
这样,构建的行为与以前相同。当您定义 -Dsurefire.plugin.useFile=true
时,您将覆盖 Maven 属性,这将确保 Surefire 启动 useFile
设置为 true
.