maven-surefire-plugins/maven-surefire-bootstrap-resources.patch

6660 lines
279 KiB
Diff

--- surefire-2.22.0/maven-failsafe-plugin/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-failsafe-plugin/plugin-help.xml 1970-01-01 01:00:00.000000000 +0100
+++ surefire-2.22.0/maven-failsafe-plugin/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-failsafe-plugin/plugin-help.xml 2019-04-01 16:35:39.493479592 +0200
@@ -0,0 +1,816 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+ <name>${project.name}</name>
+ <description>${project.description}</description>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>${project.artifactId}</artifactId>
+ <version>${project.version}</version>
+ <goalPrefix>failsafe</goalPrefix>
+ <mojos>
+ <mojo>
+ <goal>help</goal>
+ <description>Display help information on maven-failsafe-plugin.
+Call mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>false</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugin.failsafe.HelpMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>detail</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-failsafe-plugin.
+Call mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>goal</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-failsafe-plugin.
+Call mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>indentSize</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-failsafe-plugin.
+Call mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>lineLength</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-failsafe-plugin.
+Call mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <detail implementation="boolean" default-value="false">${detail}</detail>
+ <goal implementation="java.lang.String">${goal}</goal>
+ <indentSize implementation="int" default-value="2">${indentSize}</indentSize>
+ <lineLength implementation="int" default-value="80">${lineLength}</lineLength>
+ </configuration>
+ </mojo>
+ <mojo>
+ <goal>integration-test</goal>
+ <description>Run integration tests using Surefire.</description>
+ <requiresDependencyResolution>test</requiresDependencyResolution>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <phase>integration-test</phase>
+ <implementation>org.apache.maven.plugin.failsafe.IntegrationTestMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>additionalClasspathElements</name>
+ <type>java.lang.String[]</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>argLine</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>basedir</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>childDelegation</name>
+ <type>boolean</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classpathDependencyExcludes</name>
+ <type>java.lang.String[]</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classpathDependencyScopeExclude</name>
+ <type>java.lang.String</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>debugForkedProcess</name>
+ <type>java.lang.String</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>dependenciesToScan</name>
+ <type>java.lang.String[]</type>
+ <since>2.15</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>disableXmlReport</name>
+ <type>boolean</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>enableAssertions</name>
+ <type>boolean</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>encoding</name>
+ <type>java.lang.String</type>
+ <since>3.0.0-M1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>environmentVariables</name>
+ <type>java.util.Map</type>
+ <since>2.1.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludedGroups</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludes</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludesFile</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoSpecifiedTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.12</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkCount</name>
+ <type>java.lang.String</type>
+ <since>2.14</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkedProcessExitTimeoutInSeconds</name>
+ <type>int</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkedProcessTimeoutInSeconds</name>
+ <type>int</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkMode</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>groups</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>includes</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>includesFile</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>junitArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>junitPlatformArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.22.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>jvm</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>objectFactory</name>
+ <type>java.lang.String</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallel</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelOptimized</name>
+ <type>boolean</type>
+ <since>2.17</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelTestsTimeoutForcedInSeconds</name>
+ <type>double</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelTestsTimeoutInSeconds</name>
+ <type>double</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>perCoreThreadCount</name>
+ <type>boolean</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>printSummary</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>properties</name>
+ <type>java.util.Properties</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>redirectTestOutputToFile</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>remoteRepositories</name>
+ <type>java.util.List</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportFormat</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportNameSuffix</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>rerunFailingTestsCount</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reuseForks</name>
+ <type>boolean</type>
+ <since>2.13</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>runOrder</name>
+ <type>java.lang.String</type>
+ <since>2.7</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>shutdown</name>
+ <type>java.lang.String</type>
+ <since>2.19</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skip</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipAfterFailureCount</name>
+ <type>int</type>
+ <since>2.19</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipExec</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <deprecated>Use skipTests instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipITs</name>
+ <type>boolean</type>
+ <since>2.4.3-alpha-2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipTests</name>
+ <type>boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>suiteXmlFiles</name>
+ <type>java.io.File[]</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>summaryFile</name>
+ <type>java.io.File</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemProperties</name>
+ <type>java.util.Properties</type>
+ <deprecated>Use systemPropertyVariables instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemPropertiesFile</name>
+ <type>java.io.File</type>
+ <since>2.8.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemPropertyVariables</name>
+ <type>java.util.Map</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>tempDir</name>
+ <type>java.lang.String</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>test</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testClassesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testNGArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testSourceDirectory</name>
+ <type>java.io.File</type>
+ <since>2.2</since>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCount</name>
+ <type>int</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountClasses</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountMethods</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountSuites</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>trimStackTrace</name>
+ <type>boolean</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useFile</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useManifestOnlyJar</name>
+ <type>boolean</type>
+ <since>2.4.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useSystemClassLoader</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useUnlimitedThreads</name>
+ <type>boolean</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>workingDirectory</name>
+ <type>java.io.File</type>
+ <since>2.1.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <additionalClasspathElements implementation="java.lang.String[]">${maven.test.additionalClasspath}</additionalClasspathElements>
+ <argLine implementation="java.lang.String">${argLine}</argLine>
+ <basedir implementation="java.io.File" default-value="${basedir}"/>
+ <childDelegation implementation="boolean" default-value="false">${childDelegation}</childDelegation>
+ <classpathDependencyExcludes implementation="java.lang.String[]">${maven.test.dependency.excludes}</classpathDependencyExcludes>
+ <debugForkedProcess implementation="java.lang.String">${maven.failsafe.debug}</debugForkedProcess>
+ <dependenciesToScan implementation="java.lang.String[]">${dependenciesToScan}</dependenciesToScan>
+ <disableXmlReport implementation="boolean" default-value="false">${disableXmlReport}</disableXmlReport>
+ <enableAssertions implementation="boolean" default-value="true">${enableAssertions}</enableAssertions>
+ <encoding implementation="java.lang.String" default-value="${project.reporting.outputEncoding}">${encoding}</encoding>
+ <excludedGroups implementation="java.lang.String">${excludedGroups}</excludedGroups>
+ <excludesFile implementation="java.io.File">${failsafe.excludesFile}</excludesFile>
+ <failIfNoSpecifiedTests implementation="java.lang.Boolean">${it.failIfNoSpecifiedTests}</failIfNoSpecifiedTests>
+ <failIfNoTests implementation="java.lang.Boolean">${failIfNoTests}</failIfNoTests>
+ <forkCount implementation="java.lang.String" default-value="1">${forkCount}</forkCount>
+ <forkedProcessExitTimeoutInSeconds implementation="int" default-value="30">${failsafe.exitTimeout}</forkedProcessExitTimeoutInSeconds>
+ <forkedProcessTimeoutInSeconds implementation="int">${failsafe.timeout}</forkedProcessTimeoutInSeconds>
+ <forkMode implementation="java.lang.String" default-value="once">${forkMode}</forkMode>
+ <groups implementation="java.lang.String">${groups}</groups>
+ <includesFile implementation="java.io.File">${failsafe.includesFile}</includesFile>
+ <junitArtifactName implementation="java.lang.String" default-value="junit:junit">${junitArtifactName}</junitArtifactName>
+ <junitPlatformArtifactName implementation="java.lang.String" default-value="org.junit.platform:junit-platform-engine">${junitPlatformArtifactName}</junitPlatformArtifactName>
+ <jvm implementation="java.lang.String">${jvm}</jvm>
+ <objectFactory implementation="java.lang.String">${objectFactory}</objectFactory>
+ <parallel implementation="java.lang.String">${parallel}</parallel>
+ <parallelOptimized implementation="boolean" default-value="true">${parallelOptimized}</parallelOptimized>
+ <parallelTestsTimeoutForcedInSeconds implementation="double">${failsafe.parallel.forcedTimeout}</parallelTestsTimeoutForcedInSeconds>
+ <parallelTestsTimeoutInSeconds implementation="double">${failsafe.parallel.timeout}</parallelTestsTimeoutInSeconds>
+ <perCoreThreadCount implementation="boolean" default-value="true">${perCoreThreadCount}</perCoreThreadCount>
+ <printSummary implementation="boolean" default-value="true">${failsafe.printSummary}</printSummary>
+ <redirectTestOutputToFile implementation="boolean" default-value="false">${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile>
+ <remoteRepositories implementation="java.util.List" default-value="${project.pluginArtifactRepositories}"/>
+ <reportFormat implementation="java.lang.String" default-value="brief">${failsafe.reportFormat}</reportFormat>
+ <reportNameSuffix implementation="java.lang.String" default-value="">${surefire.reportNameSuffix}</reportNameSuffix>
+ <reportsDirectory implementation="java.io.File" default-value="${project.build.directory}/failsafe-reports"/>
+ <rerunFailingTestsCount implementation="int" default-value="0">${failsafe.rerunFailingTestsCount}</rerunFailingTestsCount>
+ <reuseForks implementation="boolean" default-value="true">${reuseForks}</reuseForks>
+ <runOrder implementation="java.lang.String" default-value="filesystem">${failsafe.runOrder}</runOrder>
+ <shutdown implementation="java.lang.String" default-value="testset">${failsafe.shutdown}</shutdown>
+ <skip implementation="boolean" default-value="false">${maven.test.skip}</skip>
+ <skipAfterFailureCount implementation="int" default-value="0">${failsafe.skipAfterFailureCount}</skipAfterFailureCount>
+ <skipExec implementation="boolean">${maven.test.skip.exec}</skipExec>
+ <skipITs implementation="boolean">${skipITs}</skipITs>
+ <skipTests implementation="boolean" default-value="false">${skipTests}</skipTests>
+ <suiteXmlFiles implementation="java.io.File[]">${failsafe.suiteXmlFiles}</suiteXmlFiles>
+ <summaryFile implementation="java.io.File" default-value="${project.build.directory}/failsafe-reports/failsafe-summary.xml"/>
+ <tempDir implementation="java.lang.String" default-value="surefire">${tempDir}</tempDir>
+ <test implementation="java.lang.String">${it.test}</test>
+ <testClassesDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
+ <testNGArtifactName implementation="java.lang.String" default-value="org.testng:testng">${testNGArtifactName}</testNGArtifactName>
+ <testSourceDirectory implementation="java.io.File" default-value="${project.build.testSourceDirectory}"/>
+ <threadCount implementation="int">${threadCount}</threadCount>
+ <threadCountClasses implementation="int" default-value="0">${threadCountClasses}</threadCountClasses>
+ <threadCountMethods implementation="int" default-value="0">${threadCountMethods}</threadCountMethods>
+ <threadCountSuites implementation="int" default-value="0">${threadCountSuites}</threadCountSuites>
+ <trimStackTrace implementation="boolean" default-value="true">${trimStackTrace}</trimStackTrace>
+ <useFile implementation="boolean" default-value="true">${failsafe.useFile}</useFile>
+ <useManifestOnlyJar implementation="boolean" default-value="true">${failsafe.useManifestOnlyJar}</useManifestOnlyJar>
+ <useSystemClassLoader implementation="boolean" default-value="true">${failsafe.useSystemClassLoader}</useSystemClassLoader>
+ <useUnlimitedThreads implementation="boolean" default-value="false">${useUnlimitedThreads}</useUnlimitedThreads>
+ <workingDirectory implementation="java.io.File">${basedir}</workingDirectory>
+ </configuration>
+ </mojo>
+ <mojo>
+ <goal>verify</goal>
+ <description>Verify integration tests ran using Surefire.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <phase>verify</phase>
+ <implementation>org.apache.maven.plugin.failsafe.VerifyMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>basedir</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>encoding</name>
+ <type>java.lang.String</type>
+ <deprecated>since of 2.20.1</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skip</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipExec</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <deprecated>Use -DskipTests instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipITs</name>
+ <type>boolean</type>
+ <since>2.4.3-alpha-2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipTests</name>
+ <type>boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>summaryFile</name>
+ <type>java.io.File</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>summaryFiles</name>
+ <type>java.io.File[]</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testClassesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testFailureIgnore</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <basedir implementation="java.io.File" default-value="${basedir}"/>
+ <encoding implementation="java.lang.String" default-value="${project.reporting.outputEncoding}">${encoding}</encoding>
+ <failIfNoTests implementation="java.lang.Boolean">${failIfNoTests}</failIfNoTests>
+ <reportsDirectory implementation="java.io.File" default-value="${project.build.directory}/failsafe-reports"/>
+ <skip implementation="boolean" default-value="false">${maven.test.skip}</skip>
+ <skipExec implementation="boolean">${maven.test.skip.exec}</skipExec>
+ <skipITs implementation="boolean">${skipITs}</skipITs>
+ <skipTests implementation="boolean">${skipTests}</skipTests>
+ <summaryFile implementation="java.io.File" default-value="${project.build.directory}/failsafe-reports/failsafe-summary.xml"/>
+ <testClassesDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
+ <testFailureIgnore implementation="boolean" default-value="false">${maven.test.failure.ignore}</testFailureIgnore>
+ </configuration>
+ </mojo>
+ </mojos>
+</plugin>
--- surefire-2.22.0/maven-failsafe-plugin/src/main/filtered-resources/META-INF/maven/plugin.xml 1970-01-01 01:00:00.000000000 +0100
+++ surefire-2.22.0/maven-failsafe-plugin/src/main/filtered-resources/META-INF/maven/plugin.xml 2019-04-01 16:35:39.493479592 +0200
@@ -0,0 +1,1212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+ <name>${project.name}</name>
+ <description>${project.description}</description>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>${project.artifactId}</artifactId>
+ <version>${project.version}</version>
+ <goalPrefix>failsafe</goalPrefix>
+ <isolatedRealm>false</isolatedRealm>
+ <inheritedByDefault>true</inheritedByDefault>
+ <mojos>
+ <mojo>
+ <goal>help</goal>
+ <description>Display help information on maven-failsafe-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn failsafe:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>false</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugin.failsafe.HelpMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>detail</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-failsafe-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn failsafe:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>goal</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-failsafe-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn failsafe:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>indentSize</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-failsafe-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn failsafe:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>lineLength</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-failsafe-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn failsafe:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <detail implementation="boolean" default-value="false">${detail}</detail>
+ <goal implementation="java.lang.String">${goal}</goal>
+ <indentSize implementation="int" default-value="2">${indentSize}</indentSize>
+ <lineLength implementation="int" default-value="80">${lineLength}</lineLength>
+ </configuration>
+ </mojo>
+ <mojo>
+ <goal>integration-test</goal>
+ <description>Run integration tests using Surefire.</description>
+ <requiresDependencyResolution>test</requiresDependencyResolution>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <phase>integration-test</phase>
+ <implementation>org.apache.maven.plugin.failsafe.IntegrationTestMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>additionalClasspathElements</name>
+ <type>java.lang.String[]</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>argLine</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>basedir</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>childDelegation</name>
+ <type>boolean</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classpathDependencyExcludes</name>
+ <type>java.lang.String[]</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classpathDependencyScopeExclude</name>
+ <type>java.lang.String</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>debugForkedProcess</name>
+ <type>java.lang.String</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>defaultClassesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>dependenciesToScan</name>
+ <type>java.lang.String[]</type>
+ <since>2.15</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>disableXmlReport</name>
+ <type>boolean</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>enableAssertions</name>
+ <type>boolean</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>encoding</name>
+ <type>java.lang.String</type>
+ <since>3.0.0-M1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>environmentVariables</name>
+ <type>java.util.Map</type>
+ <since>2.1.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludedGroups</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludes</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludesFile</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoSpecifiedTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.12</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkCount</name>
+ <type>java.lang.String</type>
+ <since>2.14</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkMode</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkedProcessExitTimeoutInSeconds</name>
+ <type>int</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkedProcessTimeoutInSeconds</name>
+ <type>int</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>groups</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>includes</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>includesFile</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>junitArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>junitPlatformArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.22.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>jvm</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>localRepository</name>
+ <type>org.apache.maven.artifact.repository.ArtifactRepository</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>objectFactory</name>
+ <type>java.lang.String</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallel</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelMavenExecution</name>
+ <type>java.lang.Boolean</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelOptimized</name>
+ <type>boolean</type>
+ <since>2.17</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelTestsTimeoutForcedInSeconds</name>
+ <type>double</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelTestsTimeoutInSeconds</name>
+ <type>double</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>perCoreThreadCount</name>
+ <type>boolean</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>pluginArtifactMap</name>
+ <type>java.util.Map</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>pluginDescriptor</name>
+ <type>org.apache.maven.plugin.descriptor.PluginDescriptor</type>
+ <since>2.12</since>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>printSummary</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>projectArtifactMap</name>
+ <type>java.util.Map</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>projectBuildDirectory</name>
+ <type>java.io.File</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>properties</name>
+ <type>java.util.Properties</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>redirectTestOutputToFile</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>remoteRepositories</name>
+ <type>java.util.List</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportFormat</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportNameSuffix</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>rerunFailingTestsCount</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reuseForks</name>
+ <type>boolean</type>
+ <since>2.13</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>runOrder</name>
+ <type>java.lang.String</type>
+ <since>2.7</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>shutdown</name>
+ <type>java.lang.String</type>
+ <since>2.19</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skip</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipAfterFailureCount</name>
+ <type>int</type>
+ <since>2.19</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipExec</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <deprecated>Use skipTests instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipITs</name>
+ <type>boolean</type>
+ <since>2.4.3-alpha-2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipTests</name>
+ <type>boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>suiteXmlFiles</name>
+ <type>java.io.File[]</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>summaryFile</name>
+ <type>java.io.File</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemProperties</name>
+ <type>java.util.Properties</type>
+ <deprecated>Use systemPropertyVariables instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemPropertiesFile</name>
+ <type>java.io.File</type>
+ <since>2.8.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemPropertyVariables</name>
+ <type>java.util.Map</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>tempDir</name>
+ <type>java.lang.String</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>test</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testClassesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testNGArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testSourceDirectory</name>
+ <type>java.io.File</type>
+ <since>2.2</since>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCount</name>
+ <type>int</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountClasses</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountMethods</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountSuites</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>trimStackTrace</name>
+ <type>boolean</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useFile</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useManifestOnlyJar</name>
+ <type>boolean</type>
+ <since>2.4.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useSystemClassLoader</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run integration tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useUnlimitedThreads</name>
+ <type>boolean</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>workingDirectory</name>
+ <type>java.io.File</type>
+ <since>2.1.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Abstract base class for running tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>project</name>
+ <type>org.apache.maven.project.MavenProject</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description></description>
+ </parameter>
+ <parameter>
+ <name>session</name>
+ <type>org.apache.maven.execution.MavenSession</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description></description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <additionalClasspathElements implementation="java.lang.String[]">${maven.test.additionalClasspath}</additionalClasspathElements>
+ <argLine implementation="java.lang.String">${argLine}</argLine>
+ <basedir implementation="java.io.File" default-value="${basedir}"/>
+ <childDelegation implementation="boolean" default-value="false">${childDelegation}</childDelegation>
+ <classpathDependencyExcludes implementation="java.lang.String[]">${maven.test.dependency.excludes}</classpathDependencyExcludes>
+ <debugForkedProcess implementation="java.lang.String">${maven.failsafe.debug}</debugForkedProcess>
+ <defaultClassesDirectory implementation="java.io.File" default-value="${project.build.outputDirectory}"/>
+ <dependenciesToScan implementation="java.lang.String[]">${dependenciesToScan}</dependenciesToScan>
+ <disableXmlReport implementation="boolean" default-value="false">${disableXmlReport}</disableXmlReport>
+ <enableAssertions implementation="boolean" default-value="true">${enableAssertions}</enableAssertions>
+ <encoding implementation="java.lang.String" default-value="${project.reporting.outputEncoding}">${encoding}</encoding>
+ <excludedGroups implementation="java.lang.String">${excludedGroups}</excludedGroups>
+ <excludesFile implementation="java.io.File">${failsafe.excludesFile}</excludesFile>
+ <failIfNoSpecifiedTests implementation="java.lang.Boolean">${it.failIfNoSpecifiedTests}</failIfNoSpecifiedTests>
+ <failIfNoTests implementation="java.lang.Boolean">${failIfNoTests}</failIfNoTests>
+ <forkCount implementation="java.lang.String" default-value="1">${forkCount}</forkCount>
+ <forkMode implementation="java.lang.String" default-value="once">${forkMode}</forkMode>
+ <forkedProcessExitTimeoutInSeconds implementation="int" default-value="30">${failsafe.exitTimeout}</forkedProcessExitTimeoutInSeconds>
+ <forkedProcessTimeoutInSeconds implementation="int">${failsafe.timeout}</forkedProcessTimeoutInSeconds>
+ <groups implementation="java.lang.String">${groups}</groups>
+ <includesFile implementation="java.io.File">${failsafe.includesFile}</includesFile>
+ <junitArtifactName implementation="java.lang.String" default-value="junit:junit">${junitArtifactName}</junitArtifactName>
+ <junitPlatformArtifactName implementation="java.lang.String" default-value="org.junit.platform:junit-platform-engine">${junitPlatformArtifactName}</junitPlatformArtifactName>
+ <jvm implementation="java.lang.String">${jvm}</jvm>
+ <localRepository implementation="org.apache.maven.artifact.repository.ArtifactRepository" default-value="${localRepository}"/>
+ <objectFactory implementation="java.lang.String">${objectFactory}</objectFactory>
+ <parallel implementation="java.lang.String">${parallel}</parallel>
+ <parallelMavenExecution implementation="java.lang.Boolean" default-value="${session.parallel}"/>
+ <parallelOptimized implementation="boolean" default-value="true">${parallelOptimized}</parallelOptimized>
+ <parallelTestsTimeoutForcedInSeconds implementation="double">${failsafe.parallel.forcedTimeout}</parallelTestsTimeoutForcedInSeconds>
+ <parallelTestsTimeoutInSeconds implementation="double">${failsafe.parallel.timeout}</parallelTestsTimeoutInSeconds>
+ <perCoreThreadCount implementation="boolean" default-value="true">${perCoreThreadCount}</perCoreThreadCount>
+ <pluginArtifactMap implementation="java.util.Map">${plugin.artifactMap}</pluginArtifactMap>
+ <pluginDescriptor implementation="org.apache.maven.plugin.descriptor.PluginDescriptor" default-value="${plugin}"/>
+ <printSummary implementation="boolean" default-value="true">${failsafe.printSummary}</printSummary>
+ <projectArtifactMap implementation="java.util.Map">${project.artifactMap}</projectArtifactMap>
+ <projectBuildDirectory implementation="java.io.File" default-value="${project.build.directory}"/>
+ <redirectTestOutputToFile implementation="boolean" default-value="false">${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile>
+ <remoteRepositories implementation="java.util.List" default-value="${project.pluginArtifactRepositories}"/>
+ <reportFormat implementation="java.lang.String" default-value="brief">${failsafe.reportFormat}</reportFormat>
+ <reportNameSuffix implementation="java.lang.String" default-value="">${surefire.reportNameSuffix}</reportNameSuffix>
+ <reportsDirectory implementation="java.io.File" default-value="${project.build.directory}/failsafe-reports"/>
+ <rerunFailingTestsCount implementation="int" default-value="0">${failsafe.rerunFailingTestsCount}</rerunFailingTestsCount>
+ <reuseForks implementation="boolean" default-value="true">${reuseForks}</reuseForks>
+ <runOrder implementation="java.lang.String" default-value="filesystem">${failsafe.runOrder}</runOrder>
+ <shutdown implementation="java.lang.String" default-value="testset">${failsafe.shutdown}</shutdown>
+ <skip implementation="boolean" default-value="false">${maven.test.skip}</skip>
+ <skipAfterFailureCount implementation="int" default-value="0">${failsafe.skipAfterFailureCount}</skipAfterFailureCount>
+ <skipExec implementation="boolean">${maven.test.skip.exec}</skipExec>
+ <skipITs implementation="boolean">${skipITs}</skipITs>
+ <skipTests implementation="boolean" default-value="false">${skipTests}</skipTests>
+ <suiteXmlFiles implementation="java.io.File[]">${failsafe.suiteXmlFiles}</suiteXmlFiles>
+ <summaryFile implementation="java.io.File" default-value="${project.build.directory}/failsafe-reports/failsafe-summary.xml"/>
+ <tempDir implementation="java.lang.String" default-value="surefire">${tempDir}</tempDir>
+ <test implementation="java.lang.String">${it.test}</test>
+ <testClassesDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
+ <testNGArtifactName implementation="java.lang.String" default-value="org.testng:testng">${testNGArtifactName}</testNGArtifactName>
+ <testSourceDirectory implementation="java.io.File" default-value="${project.build.testSourceDirectory}"/>
+ <threadCount implementation="int">${threadCount}</threadCount>
+ <threadCountClasses implementation="int" default-value="0">${threadCountClasses}</threadCountClasses>
+ <threadCountMethods implementation="int" default-value="0">${threadCountMethods}</threadCountMethods>
+ <threadCountSuites implementation="int" default-value="0">${threadCountSuites}</threadCountSuites>
+ <trimStackTrace implementation="boolean" default-value="true">${trimStackTrace}</trimStackTrace>
+ <useFile implementation="boolean" default-value="true">${failsafe.useFile}</useFile>
+ <useManifestOnlyJar implementation="boolean" default-value="true">${failsafe.useManifestOnlyJar}</useManifestOnlyJar>
+ <useSystemClassLoader implementation="boolean" default-value="true">${failsafe.useSystemClassLoader}</useSystemClassLoader>
+ <useUnlimitedThreads implementation="boolean" default-value="false">${useUnlimitedThreads}</useUnlimitedThreads>
+ <workingDirectory implementation="java.io.File">${basedir}</workingDirectory>
+ <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
+ <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
+ </configuration>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+ <field-name>artifactFactory</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
+ <field-name>artifactResolver</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.logging.Logger</role>
+ <field-name>logger</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
+ <field-name>metadataSource</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.toolchain.ToolchainManager</role>
+ <field-name>toolchainManager</field-name>
+ </requirement>
+ </requirements>
+ </mojo>
+ <mojo>
+ <goal>verify</goal>
+ <description>Verify integration tests ran using Surefire.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <phase>verify</phase>
+ <implementation>org.apache.maven.plugin.failsafe.VerifyMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>basedir</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>encoding</name>
+ <type>java.lang.String</type>
+ <deprecated>since of 2.20.1</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skip</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipExec</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <deprecated>Use -DskipTests instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipITs</name>
+ <type>boolean</type>
+ <since>2.4.3-alpha-2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipTests</name>
+ <type>boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>summaryFile</name>
+ <type>java.io.File</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>summaryFiles</name>
+ <type>java.io.File[]</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testClassesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testFailureIgnore</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Verify integration tests ran using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>session</name>
+ <type>org.apache.maven.execution.MavenSession</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description></description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <basedir implementation="java.io.File" default-value="${basedir}"/>
+ <encoding implementation="java.lang.String" default-value="${project.reporting.outputEncoding}">${encoding}</encoding>
+ <failIfNoTests implementation="java.lang.Boolean">${failIfNoTests}</failIfNoTests>
+ <reportsDirectory implementation="java.io.File" default-value="${project.build.directory}/failsafe-reports"/>
+ <skip implementation="boolean" default-value="false">${maven.test.skip}</skip>
+ <skipExec implementation="boolean">${maven.test.skip.exec}</skipExec>
+ <skipITs implementation="boolean">${skipITs}</skipITs>
+ <skipTests implementation="boolean">${skipTests}</skipTests>
+ <summaryFile implementation="java.io.File" default-value="${project.build.directory}/failsafe-reports/failsafe-summary.xml"/>
+ <testClassesDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
+ <testFailureIgnore implementation="boolean" default-value="false">${maven.test.failure.ignore}</testFailureIgnore>
+ <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
+ </configuration>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.logging.Logger</role>
+ <field-name>logger</field-name>
+ </requirement>
+ </requirements>
+ </mojo>
+ </mojos>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>maven-surefire-common</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-classworlds</artifactId>
+ <type>jar</type>
+ <version>2.5.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <type>jar</type>
+ <version>3.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.plexus</artifactId>
+ <type>jar</type>
+ <version>0.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-annotations</artifactId>
+ <type>jar</type>
+ <version>3.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-compat</artifactId>
+ <type>jar</type>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-interpolation</artifactId>
+ <type>jar</type>
+ <version>1.24</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-provider-api</artifactId>
+ <type>jar</type>
+ <version>3.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-api</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-logger-api</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-booter</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-settings</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-util</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.inject</artifactId>
+ <type>jar</type>
+ <version>0.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.enterprise</groupId>
+ <artifactId>cdi-api</artifactId>
+ <type>jar</type>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.el</groupId>
+ <artifactId>javax.el-api</artifactId>
+ <type>jar</type>
+ <version>3.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.spec.javax.interceptor</groupId>
+ <artifactId>jboss-interceptors-api_1.2_spec</artifactId>
+ <type>jar</type>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <type>jar</type>
+ <version>20.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ <type>jar</type>
+ <version>4.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>aopalliance</groupId>
+ <artifactId>aopalliance</artifactId>
+ <type>jar</type>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ <type>jar</type>
+ <version>3.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-resolver-provider</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-api</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <type>jar</type>
+ <version>1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-impl</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <type>jar</type>
+ <version>1.7.25</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-repository-metadata</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-spi</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-annotations</artifactId>
+ <type>jar</type>
+ <version>1.5.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model-builder</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-builder-support</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-settings-builder</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.sonatype.plexus</groupId>
+ <artifactId>plexus-sec-dispatcher</artifactId>
+ <type>jar</type>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.sonatype.plexus</groupId>
+ <artifactId>plexus-cipher</artifactId>
+ <type>jar</type>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <type>jar</type>
+ <version>4.12</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-core</artifactId>
+ <type>jar</type>
+ <version>1.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-common-artifact-filters</artifactId>
+ <type>jar</type>
+ <version>1.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-java</artifactId>
+ <type>jar</type>
+ <version>0.9.8</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm</artifactId>
+ <type>jar</type>
+ <version>6.2</version>
+ </dependency>
+ <dependency>
+ <groupId>com.thoughtworks.qdox</groupId>
+ <artifactId>qdox</artifactId>
+ <type>jar</type>
+ <version>2.0-M8</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-shared-utils</artifactId>
+ <type>jar</type>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <type>jar</type>
+ <version>3.5</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <type>jar</type>
+ <version>2.5</version>
+ </dependency>
+ </dependencies>
+</plugin>
--- surefire-2.22.0/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/HelpMojo.java 1970-01-01 01:00:00.000000000 +0100
+++ surefire-2.22.0/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/HelpMojo.java 2019-04-01 16:37:16.245968848 +0200
@@ -0,0 +1,458 @@
+
+package org.apache.maven.plugin.failsafe;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Display help information on maven-failsafe-plugin.<br>
+ * Call <code>mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> to display parameter details.
+ * @author maven-plugin-tools
+ */
+@Mojo( name = "help", requiresProject = false, threadSafe = true )
+public class HelpMojo
+ extends AbstractMojo
+{
+ /**
+ * If <code>true</code>, display all settable properties for each goal.
+ *
+ */
+ @Parameter( property = "detail", defaultValue = "false" )
+ private boolean detail;
+
+ /**
+ * The name of the goal for which to show help. If unspecified, all goals will be displayed.
+ *
+ */
+ @Parameter( property = "goal" )
+ private java.lang.String goal;
+
+ /**
+ * The maximum length of a display line, should be positive.
+ *
+ */
+ @Parameter( property = "lineLength", defaultValue = "80" )
+ private int lineLength;
+
+ /**
+ * The number of spaces per indentation level, should be positive.
+ *
+ */
+ @Parameter( property = "indentSize", defaultValue = "2" )
+ private int indentSize;
+
+ // groupId/artifactId/plugin-help.xml
+ private static final String PLUGIN_HELP_PATH =
+ "/META-INF/maven/org.apache.maven.plugins/maven-failsafe-plugin/plugin-help.xml";
+
+ private static final int DEFAULT_LINE_LENGTH = 80;
+
+ private Document build()
+ throws MojoExecutionException
+ {
+ getLog().debug( "load plugin-help.xml: " + PLUGIN_HELP_PATH );
+ InputStream is = null;
+ try
+ {
+ is = getClass().getResourceAsStream( PLUGIN_HELP_PATH );
+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+ return dBuilder.parse( is );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ catch ( ParserConfigurationException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ catch ( SAXException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ finally
+ {
+ if ( is != null )
+ {
+ try
+ {
+ is.close();
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void execute()
+ throws MojoExecutionException
+ {
+ if ( lineLength <= 0 )
+ {
+ getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
+ lineLength = DEFAULT_LINE_LENGTH;
+ }
+ if ( indentSize <= 0 )
+ {
+ getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
+ indentSize = 2;
+ }
+
+ Document doc = build();
+
+ StringBuilder sb = new StringBuilder();
+ Node plugin = getSingleChild( doc, "plugin" );
+
+
+ String name = getValue( plugin, "name" );
+ String version = getValue( plugin, "version" );
+ String id = getValue( plugin, "groupId" ) + ":" + getValue( plugin, "artifactId" ) + ":" + version;
+ if ( isNotEmpty( name ) && !name.contains( id ) )
+ {
+ append( sb, name + " " + version, 0 );
+ }
+ else
+ {
+ if ( isNotEmpty( name ) )
+ {
+ append( sb, name, 0 );
+ }
+ else
+ {
+ append( sb, id, 0 );
+ }
+ }
+ append( sb, getValue( plugin, "description" ), 1 );
+ append( sb, "", 0 );
+
+ //<goalPrefix>plugin</goalPrefix>
+ String goalPrefix = getValue( plugin, "goalPrefix" );
+
+ Node mojos1 = getSingleChild( plugin, "mojos" );
+
+ List<Node> mojos = findNamedChild( mojos1, "mojo" );
+
+ if ( goal == null || goal.length() <= 0 )
+ {
+ append( sb, "This plugin has " + mojos.size() + ( mojos.size() > 1 ? " goals:" : " goal:" ), 0 );
+ append( sb, "", 0 );
+ }
+
+ for ( Node mojo : mojos )
+ {
+ writeGoal( sb, goalPrefix, (Element) mojo );
+ }
+
+ if ( getLog().isInfoEnabled() )
+ {
+ getLog().info( sb.toString() );
+ }
+ }
+
+
+ private static boolean isNotEmpty( String string )
+ {
+ return string != null && string.length() > 0;
+ }
+
+ private String getValue( Node node, String elementName )
+ throws MojoExecutionException
+ {
+ return getSingleChild( node, elementName ).getTextContent();
+ }
+
+ private Node getSingleChild( Node node, String elementName )
+ throws MojoExecutionException
+ {
+ List<Node> namedChild = findNamedChild( node, elementName );
+ if ( namedChild.isEmpty() )
+ {
+ throw new MojoExecutionException( "Could not find " + elementName + " in plugin-help.xml" );
+ }
+ if ( namedChild.size() > 1 )
+ {
+ throw new MojoExecutionException( "Multiple " + elementName + " in plugin-help.xml" );
+ }
+ return namedChild.get( 0 );
+ }
+
+ private List<Node> findNamedChild( Node node, String elementName )
+ {
+ List<Node> result = new ArrayList<Node>();
+ NodeList childNodes = node.getChildNodes();
+ for ( int i = 0; i < childNodes.getLength(); i++ )
+ {
+ Node item = childNodes.item( i );
+ if ( elementName.equals( item.getNodeName() ) )
+ {
+ result.add( item );
+ }
+ }
+ return result;
+ }
+
+ private Node findSingleChild( Node node, String elementName )
+ throws MojoExecutionException
+ {
+ List<Node> elementsByTagName = findNamedChild( node, elementName );
+ if ( elementsByTagName.isEmpty() )
+ {
+ return null;
+ }
+ if ( elementsByTagName.size() > 1 )
+ {
+ throw new MojoExecutionException( "Multiple " + elementName + "in plugin-help.xml" );
+ }
+ return elementsByTagName.get( 0 );
+ }
+
+ private void writeGoal( StringBuilder sb, String goalPrefix, Element mojo )
+ throws MojoExecutionException
+ {
+ String mojoGoal = getValue( mojo, "goal" );
+ Node configurationElement = findSingleChild( mojo, "configuration" );
+ Node description = findSingleChild( mojo, "description" );
+ if ( goal == null || goal.length() <= 0 || mojoGoal.equals( goal ) )
+ {
+ append( sb, goalPrefix + ":" + mojoGoal, 0 );
+ Node deprecated = findSingleChild( mojo, "deprecated" );
+ if ( ( deprecated != null ) && isNotEmpty( deprecated.getTextContent() ) )
+ {
+ append( sb, "Deprecated. " + deprecated.getTextContent(), 1 );
+ if ( detail && description != null )
+ {
+ append( sb, "", 0 );
+ append( sb, description.getTextContent(), 1 );
+ }
+ }
+ else if ( description != null )
+ {
+ append( sb, description.getTextContent(), 1 );
+ }
+ append( sb, "", 0 );
+
+ if ( detail )
+ {
+ Node parametersNode = getSingleChild( mojo, "parameters" );
+ List<Node> parameters = findNamedChild( parametersNode, "parameter" );
+ append( sb, "Available parameters:", 1 );
+ append( sb, "", 0 );
+
+ for ( Node parameter : parameters )
+ {
+ writeParameter( sb, parameter, configurationElement );
+ }
+ }
+ }
+ }
+
+ private void writeParameter( StringBuilder sb, Node parameter, Node configurationElement )
+ throws MojoExecutionException
+ {
+ String parameterName = getValue( parameter, "name" );
+ String parameterDescription = getValue( parameter, "description" );
+
+ Element fieldConfigurationElement = null;
+ if ( configurationElement != null )
+ {
+ fieldConfigurationElement = (Element) findSingleChild( configurationElement, parameterName );
+ }
+
+ String parameterDefaultValue = "";
+ if ( fieldConfigurationElement != null && fieldConfigurationElement.hasAttribute( "default-value" ) )
+ {
+ parameterDefaultValue = " (Default: " + fieldConfigurationElement.getAttribute( "default-value" ) + ")";
+ }
+ append( sb, parameterName + parameterDefaultValue, 2 );
+ Node deprecated = findSingleChild( parameter, "deprecated" );
+ if ( ( deprecated != null ) && isNotEmpty( deprecated.getTextContent() ) )
+ {
+ append( sb, "Deprecated. " + deprecated.getTextContent(), 3 );
+ append( sb, "", 0 );
+ }
+ append( sb, parameterDescription, 3 );
+ if ( "true".equals( getValue( parameter, "required" ) ) )
+ {
+ append( sb, "Required: Yes", 3 );
+ }
+ if ( ( fieldConfigurationElement != null ) && isNotEmpty( fieldConfigurationElement.getTextContent() ) )
+ {
+ String property = getPropertyFromExpression( fieldConfigurationElement.getTextContent() );
+ append( sb, "User property: " + property, 3 );
+ }
+
+ append( sb, "", 0 );
+ }
+
+ /**
+ * <p>Repeat a String <code>n</code> times to form a new string.</p>
+ *
+ * @param str String to repeat
+ * @param repeat number of times to repeat str
+ * @return String with repeated String
+ * @throws NegativeArraySizeException if <code>repeat &lt; 0</code>
+ * @throws NullPointerException if str is <code>null</code>
+ */
+ private static String repeat( String str, int repeat )
+ {
+ StringBuilder buffer = new StringBuilder( repeat * str.length() );
+
+ for ( int i = 0; i < repeat; i++ )
+ {
+ buffer.append( str );
+ }
+
+ return buffer.toString();
+ }
+
+ /**
+ * Append a description to the buffer by respecting the indentSize and lineLength parameters.
+ * <b>Note</b>: The last character is always a new line.
+ *
+ * @param sb The buffer to append the description, not <code>null</code>.
+ * @param description The description, not <code>null</code>.
+ * @param indent The base indentation level of each line, must not be negative.
+ */
+ private void append( StringBuilder sb, String description, int indent )
+ {
+ for ( String line : toLines( description, indent, indentSize, lineLength ) )
+ {
+ sb.append( line ).append( '\n' );
+ }
+ }
+
+ /**
+ * Splits the specified text into lines of convenient display length.
+ *
+ * @param text The text to split into lines, must not be <code>null</code>.
+ * @param indent The base indentation level of each line, must not be negative.
+ * @param indentSize The size of each indentation, must not be negative.
+ * @param lineLength The length of the line, must not be negative.
+ * @return The sequence of display lines, never <code>null</code>.
+ * @throws NegativeArraySizeException if <code>indent &lt; 0</code>
+ */
+ private static List<String> toLines( String text, int indent, int indentSize, int lineLength )
+ {
+ List<String> lines = new ArrayList<String>();
+
+ String ind = repeat( "\t", indent );
+
+ String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
+
+ for ( String plainLine : plainLines )
+ {
+ toLines( lines, ind + plainLine, indentSize, lineLength );
+ }
+
+ return lines;
+ }
+
+ /**
+ * Adds the specified line to the output sequence, performing line wrapping if necessary.
+ *
+ * @param lines The sequence of display lines, must not be <code>null</code>.
+ * @param line The line to add, must not be <code>null</code>.
+ * @param indentSize The size of each indentation, must not be negative.
+ * @param lineLength The length of the line, must not be negative.
+ */
+ private static void toLines( List<String> lines, String line, int indentSize, int lineLength )
+ {
+ int lineIndent = getIndentLevel( line );
+ StringBuilder buf = new StringBuilder( 256 );
+
+ String[] tokens = line.split( " +" );
+
+ for ( String token : tokens )
+ {
+ if ( buf.length() > 0 )
+ {
+ if ( buf.length() + token.length() >= lineLength )
+ {
+ lines.add( buf.toString() );
+ buf.setLength( 0 );
+ buf.append( repeat( " ", lineIndent * indentSize ) );
+ }
+ else
+ {
+ buf.append( ' ' );
+ }
+ }
+
+ for ( int j = 0; j < token.length(); j++ )
+ {
+ char c = token.charAt( j );
+ if ( c == '\t' )
+ {
+ buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
+ }
+ else if ( c == '\u00A0' )
+ {
+ buf.append( ' ' );
+ }
+ else
+ {
+ buf.append( c );
+ }
+ }
+ }
+ lines.add( buf.toString() );
+ }
+
+ /**
+ * Gets the indentation level of the specified line.
+ *
+ * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
+ * @return The indentation level of the line.
+ */
+ private static int getIndentLevel( String line )
+ {
+ int level = 0;
+ for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
+ {
+ level++;
+ }
+ for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
+ {
+ if ( line.charAt( i ) == '\t' )
+ {
+ level++;
+ break;
+ }
+ }
+ return level;
+ }
+
+ private String getPropertyFromExpression( String expression )
+ {
+ if ( expression != null && expression.startsWith( "${" ) && expression.endsWith( "}" )
+ && !expression.substring( 2 ).contains( "${" ) )
+ {
+ // expression="${xxx}" -> property="xxx"
+ return expression.substring( 2, expression.length() - 1 );
+ }
+ // no property can be extracted
+ return null;
+ }
+}
--- surefire-2.22.0/maven-surefire-plugin/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-surefire-plugin/plugin-help.xml 1970-01-01 01:00:00.000000000 +0100
+++ surefire-2.22.0/maven-surefire-plugin/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-surefire-plugin/plugin-help.xml 2019-04-01 16:35:39.493479592 +0200
@@ -0,0 +1,686 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+ <name>${project.name}</name>
+ <description>${project.description}</description>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>${project.artifactId}</artifactId>
+ <version>${project.version}</version>
+ <goalPrefix>surefire</goalPrefix>
+ <mojos>
+ <mojo>
+ <goal>help</goal>
+ <description>Display help information on maven-surefire-plugin.
+Call mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>false</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugin.surefire.HelpMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>detail</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-plugin.
+Call mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>goal</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-plugin.
+Call mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>indentSize</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-plugin.
+Call mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>lineLength</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-plugin.
+Call mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <detail implementation="boolean" default-value="false">${detail}</detail>
+ <goal implementation="java.lang.String">${goal}</goal>
+ <indentSize implementation="int" default-value="2">${indentSize}</indentSize>
+ <lineLength implementation="int" default-value="80">${lineLength}</lineLength>
+ </configuration>
+ </mojo>
+ <mojo>
+ <goal>test</goal>
+ <description>Run tests using Surefire.</description>
+ <requiresDependencyResolution>test</requiresDependencyResolution>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <phase>test</phase>
+ <implementation>org.apache.maven.plugin.surefire.SurefirePlugin</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>additionalClasspathElements</name>
+ <type>java.lang.String[]</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>argLine</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>basedir</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>childDelegation</name>
+ <type>boolean</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classpathDependencyExcludes</name>
+ <type>java.lang.String[]</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classpathDependencyScopeExclude</name>
+ <type>java.lang.String</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>debugForkedProcess</name>
+ <type>java.lang.String</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>dependenciesToScan</name>
+ <type>java.lang.String[]</type>
+ <since>2.15</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>disableXmlReport</name>
+ <type>boolean</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>enableAssertions</name>
+ <type>boolean</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>encoding</name>
+ <type>java.lang.String</type>
+ <since>3.0.0-M1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>environmentVariables</name>
+ <type>java.util.Map</type>
+ <since>2.1.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludedGroups</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludes</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludesFile</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoSpecifiedTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.12</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkCount</name>
+ <type>java.lang.String</type>
+ <since>2.14</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkedProcessExitTimeoutInSeconds</name>
+ <type>int</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkedProcessTimeoutInSeconds</name>
+ <type>int</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkMode</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>groups</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>includes</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>includesFile</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>junitArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>junitPlatformArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.22.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>jvm</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>objectFactory</name>
+ <type>java.lang.String</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallel</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelOptimized</name>
+ <type>boolean</type>
+ <since>2.17</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelTestsTimeoutForcedInSeconds</name>
+ <type>double</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelTestsTimeoutInSeconds</name>
+ <type>double</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>perCoreThreadCount</name>
+ <type>boolean</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>printSummary</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>properties</name>
+ <type>java.util.Properties</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>redirectTestOutputToFile</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>remoteRepositories</name>
+ <type>java.util.List</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportFormat</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportNameSuffix</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>rerunFailingTestsCount</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reuseForks</name>
+ <type>boolean</type>
+ <since>2.13</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>runOrder</name>
+ <type>java.lang.String</type>
+ <since>2.7</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>shutdown</name>
+ <type>java.lang.String</type>
+ <since>2.19</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skip</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipAfterFailureCount</name>
+ <type>int</type>
+ <since>2.19</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipExec</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <deprecated>Use skipTests instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipTests</name>
+ <type>boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>suiteXmlFiles</name>
+ <type>java.io.File[]</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemProperties</name>
+ <type>java.util.Properties</type>
+ <deprecated>Use systemPropertyVariables instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemPropertiesFile</name>
+ <type>java.io.File</type>
+ <since>2.8.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemPropertyVariables</name>
+ <type>java.util.Map</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>tempDir</name>
+ <type>java.lang.String</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>test</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testClassesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testFailureIgnore</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testNGArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testSourceDirectory</name>
+ <type>java.io.File</type>
+ <since>2.2</since>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCount</name>
+ <type>int</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountClasses</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountMethods</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountSuites</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>trimStackTrace</name>
+ <type>boolean</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useFile</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useManifestOnlyJar</name>
+ <type>boolean</type>
+ <since>2.4.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useSystemClassLoader</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useUnlimitedThreads</name>
+ <type>boolean</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>workingDirectory</name>
+ <type>java.io.File</type>
+ <since>2.1.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <additionalClasspathElements implementation="java.lang.String[]">${maven.test.additionalClasspath}</additionalClasspathElements>
+ <argLine implementation="java.lang.String">${argLine}</argLine>
+ <basedir implementation="java.io.File" default-value="${basedir}"/>
+ <childDelegation implementation="boolean" default-value="false">${childDelegation}</childDelegation>
+ <classesDirectory implementation="java.io.File" default-value="${project.build.outputDirectory}"/>
+ <classpathDependencyExcludes implementation="java.lang.String[]">${maven.test.dependency.excludes}</classpathDependencyExcludes>
+ <debugForkedProcess implementation="java.lang.String">${maven.surefire.debug}</debugForkedProcess>
+ <dependenciesToScan implementation="java.lang.String[]">${dependenciesToScan}</dependenciesToScan>
+ <disableXmlReport implementation="boolean" default-value="false">${disableXmlReport}</disableXmlReport>
+ <enableAssertions implementation="boolean" default-value="true">${enableAssertions}</enableAssertions>
+ <encoding implementation="java.lang.String" default-value="${project.reporting.outputEncoding}">${surefire.encoding}</encoding>
+ <excludedGroups implementation="java.lang.String">${excludedGroups}</excludedGroups>
+ <excludesFile implementation="java.io.File">${surefire.excludesFile}</excludesFile>
+ <failIfNoSpecifiedTests implementation="java.lang.Boolean">${surefire.failIfNoSpecifiedTests}</failIfNoSpecifiedTests>
+ <failIfNoTests implementation="java.lang.Boolean">${failIfNoTests}</failIfNoTests>
+ <forkCount implementation="java.lang.String" default-value="1">${forkCount}</forkCount>
+ <forkedProcessExitTimeoutInSeconds implementation="int" default-value="30">${surefire.exitTimeout}</forkedProcessExitTimeoutInSeconds>
+ <forkedProcessTimeoutInSeconds implementation="int">${surefire.timeout}</forkedProcessTimeoutInSeconds>
+ <forkMode implementation="java.lang.String" default-value="once">${forkMode}</forkMode>
+ <groups implementation="java.lang.String">${groups}</groups>
+ <includesFile implementation="java.io.File">${surefire.includesFile}</includesFile>
+ <junitArtifactName implementation="java.lang.String" default-value="junit:junit">${junitArtifactName}</junitArtifactName>
+ <junitPlatformArtifactName implementation="java.lang.String" default-value="org.junit.platform:junit-platform-engine">${junitPlatformArtifactName}</junitPlatformArtifactName>
+ <jvm implementation="java.lang.String">${jvm}</jvm>
+ <objectFactory implementation="java.lang.String">${objectFactory}</objectFactory>
+ <parallel implementation="java.lang.String">${parallel}</parallel>
+ <parallelOptimized implementation="boolean" default-value="true">${parallelOptimized}</parallelOptimized>
+ <parallelTestsTimeoutForcedInSeconds implementation="double">${surefire.parallel.forcedTimeout}</parallelTestsTimeoutForcedInSeconds>
+ <parallelTestsTimeoutInSeconds implementation="double">${surefire.parallel.timeout}</parallelTestsTimeoutInSeconds>
+ <perCoreThreadCount implementation="boolean" default-value="true">${perCoreThreadCount}</perCoreThreadCount>
+ <printSummary implementation="boolean" default-value="true">${surefire.printSummary}</printSummary>
+ <redirectTestOutputToFile implementation="boolean" default-value="false">${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile>
+ <remoteRepositories implementation="java.util.List" default-value="${project.pluginArtifactRepositories}"/>
+ <reportFormat implementation="java.lang.String" default-value="brief">${surefire.reportFormat}</reportFormat>
+ <reportNameSuffix implementation="java.lang.String" default-value="">${surefire.reportNameSuffix}</reportNameSuffix>
+ <reportsDirectory implementation="java.io.File" default-value="${project.build.directory}/surefire-reports"/>
+ <rerunFailingTestsCount implementation="int" default-value="0">${surefire.rerunFailingTestsCount}</rerunFailingTestsCount>
+ <reuseForks implementation="boolean" default-value="true">${reuseForks}</reuseForks>
+ <runOrder implementation="java.lang.String" default-value="filesystem">${surefire.runOrder}</runOrder>
+ <shutdown implementation="java.lang.String" default-value="testset">${surefire.shutdown}</shutdown>
+ <skip implementation="boolean" default-value="false">${maven.test.skip}</skip>
+ <skipAfterFailureCount implementation="int" default-value="0">${surefire.skipAfterFailureCount}</skipAfterFailureCount>
+ <skipExec implementation="boolean">${maven.test.skip.exec}</skipExec>
+ <skipTests implementation="boolean" default-value="false">${skipTests}</skipTests>
+ <suiteXmlFiles implementation="java.io.File[]">${surefire.suiteXmlFiles}</suiteXmlFiles>
+ <tempDir implementation="java.lang.String" default-value="surefire">${tempDir}</tempDir>
+ <test implementation="java.lang.String">${test}</test>
+ <testClassesDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
+ <testFailureIgnore implementation="boolean" default-value="false">${maven.test.failure.ignore}</testFailureIgnore>
+ <testNGArtifactName implementation="java.lang.String" default-value="org.testng:testng">${testNGArtifactName}</testNGArtifactName>
+ <testSourceDirectory implementation="java.io.File" default-value="${project.build.testSourceDirectory}"/>
+ <threadCount implementation="int">${threadCount}</threadCount>
+ <threadCountClasses implementation="int" default-value="0">${threadCountClasses}</threadCountClasses>
+ <threadCountMethods implementation="int" default-value="0">${threadCountMethods}</threadCountMethods>
+ <threadCountSuites implementation="int" default-value="0">${threadCountSuites}</threadCountSuites>
+ <trimStackTrace implementation="boolean" default-value="true">${trimStackTrace}</trimStackTrace>
+ <useFile implementation="boolean" default-value="true">${surefire.useFile}</useFile>
+ <useManifestOnlyJar implementation="boolean" default-value="true">${surefire.useManifestOnlyJar}</useManifestOnlyJar>
+ <useSystemClassLoader implementation="boolean" default-value="true">${surefire.useSystemClassLoader}</useSystemClassLoader>
+ <useUnlimitedThreads implementation="boolean" default-value="false">${useUnlimitedThreads}</useUnlimitedThreads>
+ <workingDirectory implementation="java.io.File">${basedir}</workingDirectory>
+ </configuration>
+ </mojo>
+ </mojos>
+</plugin>
--- surefire-2.22.0/maven-surefire-plugin/src/main/filtered-resources/META-INF/maven/plugin.xml 1970-01-01 01:00:00.000000000 +0100
+++ surefire-2.22.0/maven-surefire-plugin/src/main/filtered-resources/META-INF/maven/plugin.xml 2019-04-01 16:35:39.493479592 +0200
@@ -0,0 +1,1060 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+ <name>${project.name}</name>
+ <description>${project.description}</description>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>${project.artifactId}</artifactId>
+ <version>${project.version}</version>
+ <goalPrefix>surefire</goalPrefix>
+ <isolatedRealm>false</isolatedRealm>
+ <inheritedByDefault>true</inheritedByDefault>
+ <mojos>
+ <mojo>
+ <goal>help</goal>
+ <description>Display help information on maven-surefire-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>false</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugin.surefire.HelpMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>detail</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>goal</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>indentSize</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>lineLength</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <detail implementation="boolean" default-value="false">${detail}</detail>
+ <goal implementation="java.lang.String">${goal}</goal>
+ <indentSize implementation="int" default-value="2">${indentSize}</indentSize>
+ <lineLength implementation="int" default-value="80">${lineLength}</lineLength>
+ </configuration>
+ </mojo>
+ <mojo>
+ <goal>test</goal>
+ <description>Run tests using Surefire.</description>
+ <requiresDependencyResolution>test</requiresDependencyResolution>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <phase>test</phase>
+ <implementation>org.apache.maven.plugin.surefire.SurefirePlugin</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>additionalClasspathElements</name>
+ <type>java.lang.String[]</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>argLine</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>basedir</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>childDelegation</name>
+ <type>boolean</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classpathDependencyExcludes</name>
+ <type>java.lang.String[]</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>classpathDependencyScopeExclude</name>
+ <type>java.lang.String</type>
+ <since>2.6</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>debugForkedProcess</name>
+ <type>java.lang.String</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>dependenciesToScan</name>
+ <type>java.lang.String[]</type>
+ <since>2.15</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>disableXmlReport</name>
+ <type>boolean</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>enableAssertions</name>
+ <type>boolean</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>encoding</name>
+ <type>java.lang.String</type>
+ <since>3.0.0-M1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>environmentVariables</name>
+ <type>java.util.Map</type>
+ <since>2.1.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludedGroups</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludes</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>excludesFile</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoSpecifiedTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.12</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>failIfNoTests</name>
+ <type>java.lang.Boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkCount</name>
+ <type>java.lang.String</type>
+ <since>2.14</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkMode</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkedProcessExitTimeoutInSeconds</name>
+ <type>int</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>forkedProcessTimeoutInSeconds</name>
+ <type>int</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>groups</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>includes</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>includesFile</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>junitArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>junitPlatformArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.22.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>jvm</name>
+ <type>java.lang.String</type>
+ <since>2.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>localRepository</name>
+ <type>org.apache.maven.artifact.repository.ArtifactRepository</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>objectFactory</name>
+ <type>java.lang.String</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallel</name>
+ <type>java.lang.String</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelMavenExecution</name>
+ <type>java.lang.Boolean</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelOptimized</name>
+ <type>boolean</type>
+ <since>2.17</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelTestsTimeoutForcedInSeconds</name>
+ <type>double</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>parallelTestsTimeoutInSeconds</name>
+ <type>double</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>perCoreThreadCount</name>
+ <type>boolean</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>pluginArtifactMap</name>
+ <type>java.util.Map</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>pluginDescriptor</name>
+ <type>org.apache.maven.plugin.descriptor.PluginDescriptor</type>
+ <since>2.12</since>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>printSummary</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>projectArtifactMap</name>
+ <type>java.util.Map</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>projectBuildDirectory</name>
+ <type>java.io.File</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>properties</name>
+ <type>java.util.Properties</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>redirectTestOutputToFile</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>remoteRepositories</name>
+ <type>java.util.List</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportFormat</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportNameSuffix</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>rerunFailingTestsCount</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>reuseForks</name>
+ <type>boolean</type>
+ <since>2.13</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>runOrder</name>
+ <type>java.lang.String</type>
+ <since>2.7</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>shutdown</name>
+ <type>java.lang.String</type>
+ <since>2.19</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skip</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipAfterFailureCount</name>
+ <type>int</type>
+ <since>2.19</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipExec</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <deprecated>Use skipTests instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>skipTests</name>
+ <type>boolean</type>
+ <since>2.4</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>suiteXmlFiles</name>
+ <type>java.io.File[]</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemProperties</name>
+ <type>java.util.Properties</type>
+ <deprecated>Use systemPropertyVariables instead.</deprecated>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemPropertiesFile</name>
+ <type>java.io.File</type>
+ <since>2.8.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>systemPropertyVariables</name>
+ <type>java.util.Map</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>tempDir</name>
+ <type>java.lang.String</type>
+ <since>2.20</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>test</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testClassesDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testFailureIgnore</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testNGArtifactName</name>
+ <type>java.lang.String</type>
+ <since>2.3.1</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>testSourceDirectory</name>
+ <type>java.io.File</type>
+ <since>2.2</since>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCount</name>
+ <type>int</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountClasses</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountMethods</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>threadCountSuites</name>
+ <type>int</type>
+ <since>2.16</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>trimStackTrace</name>
+ <type>boolean</type>
+ <since>2.2</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useFile</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useManifestOnlyJar</name>
+ <type>boolean</type>
+ <since>2.4.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useSystemClassLoader</name>
+ <type>boolean</type>
+ <since>2.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>useUnlimitedThreads</name>
+ <type>boolean</type>
+ <since>2.5</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>workingDirectory</name>
+ <type>java.io.File</type>
+ <since>2.1.3</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Run tests using Surefire.</description>
+ </parameter>
+ <parameter>
+ <name>project</name>
+ <type>org.apache.maven.project.MavenProject</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description></description>
+ </parameter>
+ <parameter>
+ <name>session</name>
+ <type>org.apache.maven.execution.MavenSession</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description></description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <additionalClasspathElements implementation="java.lang.String[]">${maven.test.additionalClasspath}</additionalClasspathElements>
+ <argLine implementation="java.lang.String">${argLine}</argLine>
+ <basedir implementation="java.io.File" default-value="${basedir}"/>
+ <childDelegation implementation="boolean" default-value="false">${childDelegation}</childDelegation>
+ <classesDirectory implementation="java.io.File" default-value="${project.build.outputDirectory}"/>
+ <classpathDependencyExcludes implementation="java.lang.String[]">${maven.test.dependency.excludes}</classpathDependencyExcludes>
+ <debugForkedProcess implementation="java.lang.String">${maven.surefire.debug}</debugForkedProcess>
+ <dependenciesToScan implementation="java.lang.String[]">${dependenciesToScan}</dependenciesToScan>
+ <disableXmlReport implementation="boolean" default-value="false">${disableXmlReport}</disableXmlReport>
+ <enableAssertions implementation="boolean" default-value="true">${enableAssertions}</enableAssertions>
+ <encoding implementation="java.lang.String" default-value="${project.reporting.outputEncoding}">${surefire.encoding}</encoding>
+ <excludedGroups implementation="java.lang.String">${excludedGroups}</excludedGroups>
+ <excludesFile implementation="java.io.File">${surefire.excludesFile}</excludesFile>
+ <failIfNoSpecifiedTests implementation="java.lang.Boolean">${surefire.failIfNoSpecifiedTests}</failIfNoSpecifiedTests>
+ <failIfNoTests implementation="java.lang.Boolean">${failIfNoTests}</failIfNoTests>
+ <forkCount implementation="java.lang.String" default-value="1">${forkCount}</forkCount>
+ <forkMode implementation="java.lang.String" default-value="once">${forkMode}</forkMode>
+ <forkedProcessExitTimeoutInSeconds implementation="int" default-value="30">${surefire.exitTimeout}</forkedProcessExitTimeoutInSeconds>
+ <forkedProcessTimeoutInSeconds implementation="int">${surefire.timeout}</forkedProcessTimeoutInSeconds>
+ <groups implementation="java.lang.String">${groups}</groups>
+ <includesFile implementation="java.io.File">${surefire.includesFile}</includesFile>
+ <junitArtifactName implementation="java.lang.String" default-value="junit:junit">${junitArtifactName}</junitArtifactName>
+ <junitPlatformArtifactName implementation="java.lang.String" default-value="org.junit.platform:junit-platform-engine">${junitPlatformArtifactName}</junitPlatformArtifactName>
+ <jvm implementation="java.lang.String">${jvm}</jvm>
+ <localRepository implementation="org.apache.maven.artifact.repository.ArtifactRepository" default-value="${localRepository}"/>
+ <objectFactory implementation="java.lang.String">${objectFactory}</objectFactory>
+ <parallel implementation="java.lang.String">${parallel}</parallel>
+ <parallelMavenExecution implementation="java.lang.Boolean" default-value="${session.parallel}"/>
+ <parallelOptimized implementation="boolean" default-value="true">${parallelOptimized}</parallelOptimized>
+ <parallelTestsTimeoutForcedInSeconds implementation="double">${surefire.parallel.forcedTimeout}</parallelTestsTimeoutForcedInSeconds>
+ <parallelTestsTimeoutInSeconds implementation="double">${surefire.parallel.timeout}</parallelTestsTimeoutInSeconds>
+ <perCoreThreadCount implementation="boolean" default-value="true">${perCoreThreadCount}</perCoreThreadCount>
+ <pluginArtifactMap implementation="java.util.Map">${plugin.artifactMap}</pluginArtifactMap>
+ <pluginDescriptor implementation="org.apache.maven.plugin.descriptor.PluginDescriptor" default-value="${plugin}"/>
+ <printSummary implementation="boolean" default-value="true">${surefire.printSummary}</printSummary>
+ <projectArtifactMap implementation="java.util.Map">${project.artifactMap}</projectArtifactMap>
+ <projectBuildDirectory implementation="java.io.File" default-value="${project.build.directory}"/>
+ <redirectTestOutputToFile implementation="boolean" default-value="false">${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile>
+ <remoteRepositories implementation="java.util.List" default-value="${project.pluginArtifactRepositories}"/>
+ <reportFormat implementation="java.lang.String" default-value="brief">${surefire.reportFormat}</reportFormat>
+ <reportNameSuffix implementation="java.lang.String" default-value="">${surefire.reportNameSuffix}</reportNameSuffix>
+ <reportsDirectory implementation="java.io.File" default-value="${project.build.directory}/surefire-reports"/>
+ <rerunFailingTestsCount implementation="int" default-value="0">${surefire.rerunFailingTestsCount}</rerunFailingTestsCount>
+ <reuseForks implementation="boolean" default-value="true">${reuseForks}</reuseForks>
+ <runOrder implementation="java.lang.String" default-value="filesystem">${surefire.runOrder}</runOrder>
+ <shutdown implementation="java.lang.String" default-value="testset">${surefire.shutdown}</shutdown>
+ <skip implementation="boolean" default-value="false">${maven.test.skip}</skip>
+ <skipAfterFailureCount implementation="int" default-value="0">${surefire.skipAfterFailureCount}</skipAfterFailureCount>
+ <skipExec implementation="boolean">${maven.test.skip.exec}</skipExec>
+ <skipTests implementation="boolean" default-value="false">${skipTests}</skipTests>
+ <suiteXmlFiles implementation="java.io.File[]">${surefire.suiteXmlFiles}</suiteXmlFiles>
+ <tempDir implementation="java.lang.String" default-value="surefire">${tempDir}</tempDir>
+ <test implementation="java.lang.String">${test}</test>
+ <testClassesDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
+ <testFailureIgnore implementation="boolean" default-value="false">${maven.test.failure.ignore}</testFailureIgnore>
+ <testNGArtifactName implementation="java.lang.String" default-value="org.testng:testng">${testNGArtifactName}</testNGArtifactName>
+ <testSourceDirectory implementation="java.io.File" default-value="${project.build.testSourceDirectory}"/>
+ <threadCount implementation="int">${threadCount}</threadCount>
+ <threadCountClasses implementation="int" default-value="0">${threadCountClasses}</threadCountClasses>
+ <threadCountMethods implementation="int" default-value="0">${threadCountMethods}</threadCountMethods>
+ <threadCountSuites implementation="int" default-value="0">${threadCountSuites}</threadCountSuites>
+ <trimStackTrace implementation="boolean" default-value="true">${trimStackTrace}</trimStackTrace>
+ <useFile implementation="boolean" default-value="true">${surefire.useFile}</useFile>
+ <useManifestOnlyJar implementation="boolean" default-value="true">${surefire.useManifestOnlyJar}</useManifestOnlyJar>
+ <useSystemClassLoader implementation="boolean" default-value="true">${surefire.useSystemClassLoader}</useSystemClassLoader>
+ <useUnlimitedThreads implementation="boolean" default-value="false">${useUnlimitedThreads}</useUnlimitedThreads>
+ <workingDirectory implementation="java.io.File">${basedir}</workingDirectory>
+ <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
+ <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
+ </configuration>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+ <field-name>artifactFactory</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
+ <field-name>artifactResolver</field-name>
+ </requirement>
+ <requirement>
+ <role>org.codehaus.plexus.logging.Logger</role>
+ <field-name>logger</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
+ <field-name>metadataSource</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.toolchain.ToolchainManager</role>
+ <field-name>toolchainManager</field-name>
+ </requirement>
+ </requirements>
+ </mojo>
+ </mojos>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>maven-surefire-common</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-classworlds</artifactId>
+ <type>jar</type>
+ <version>2.5.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <type>jar</type>
+ <version>3.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.plexus</artifactId>
+ <type>jar</type>
+ <version>0.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-annotations</artifactId>
+ <type>jar</type>
+ <version>3.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-compat</artifactId>
+ <type>jar</type>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-interpolation</artifactId>
+ <type>jar</type>
+ <version>1.24</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-provider-api</artifactId>
+ <type>jar</type>
+ <version>3.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-api</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-logger-api</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-booter</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-shared-utils</artifactId>
+ <type>jar</type>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <type>jar</type>
+ <version>2.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-settings</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-util</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.inject</artifactId>
+ <type>jar</type>
+ <version>0.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.enterprise</groupId>
+ <artifactId>cdi-api</artifactId>
+ <type>jar</type>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.el</groupId>
+ <artifactId>javax.el-api</artifactId>
+ <type>jar</type>
+ <version>3.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.spec.javax.interceptor</groupId>
+ <artifactId>jboss-interceptors-api_1.2_spec</artifactId>
+ <type>jar</type>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <type>jar</type>
+ <version>20.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ <type>jar</type>
+ <version>4.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>aopalliance</groupId>
+ <artifactId>aopalliance</artifactId>
+ <type>jar</type>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ <type>jar</type>
+ <version>3.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-resolver-provider</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-api</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <type>jar</type>
+ <version>1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-impl</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <type>jar</type>
+ <version>1.7.25</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-repository-metadata</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-spi</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-annotations</artifactId>
+ <type>jar</type>
+ <version>1.5.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model-builder</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-builder-support</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-settings-builder</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.sonatype.plexus</groupId>
+ <artifactId>plexus-sec-dispatcher</artifactId>
+ <type>jar</type>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.sonatype.plexus</groupId>
+ <artifactId>plexus-cipher</artifactId>
+ <type>jar</type>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <type>jar</type>
+ <version>4.12</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-core</artifactId>
+ <type>jar</type>
+ <version>1.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <type>jar</type>
+ <version>3.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-common-artifact-filters</artifactId>
+ <type>jar</type>
+ <version>1.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-java</artifactId>
+ <type>jar</type>
+ <version>0.9.8</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm</artifactId>
+ <type>jar</type>
+ <version>6.2</version>
+ </dependency>
+ <dependency>
+ <groupId>com.thoughtworks.qdox</groupId>
+ <artifactId>qdox</artifactId>
+ <type>jar</type>
+ <version>2.0-M8</version>
+ </dependency>
+ </dependencies>
+</plugin>
--- surefire-2.22.0/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/HelpMojo.java 1970-01-01 01:00:00.000000000 +0100
+++ surefire-2.22.0/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/HelpMojo.java 2019-04-01 16:37:53.006154740 +0200
@@ -0,0 +1,458 @@
+
+package org.apache.maven.plugin.surefire;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Display help information on maven-surefire-plugin.<br>
+ * Call <code>mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> to display parameter details.
+ * @author maven-plugin-tools
+ */
+@Mojo( name = "help", requiresProject = false, threadSafe = true )
+public class HelpMojo
+ extends AbstractMojo
+{
+ /**
+ * If <code>true</code>, display all settable properties for each goal.
+ *
+ */
+ @Parameter( property = "detail", defaultValue = "false" )
+ private boolean detail;
+
+ /**
+ * The name of the goal for which to show help. If unspecified, all goals will be displayed.
+ *
+ */
+ @Parameter( property = "goal" )
+ private java.lang.String goal;
+
+ /**
+ * The maximum length of a display line, should be positive.
+ *
+ */
+ @Parameter( property = "lineLength", defaultValue = "80" )
+ private int lineLength;
+
+ /**
+ * The number of spaces per indentation level, should be positive.
+ *
+ */
+ @Parameter( property = "indentSize", defaultValue = "2" )
+ private int indentSize;
+
+ // groupId/artifactId/plugin-help.xml
+ private static final String PLUGIN_HELP_PATH =
+ "/META-INF/maven/org.apache.maven.plugins/maven-surefire-plugin/plugin-help.xml";
+
+ private static final int DEFAULT_LINE_LENGTH = 80;
+
+ private Document build()
+ throws MojoExecutionException
+ {
+ getLog().debug( "load plugin-help.xml: " + PLUGIN_HELP_PATH );
+ InputStream is = null;
+ try
+ {
+ is = getClass().getResourceAsStream( PLUGIN_HELP_PATH );
+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+ return dBuilder.parse( is );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ catch ( ParserConfigurationException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ catch ( SAXException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ finally
+ {
+ if ( is != null )
+ {
+ try
+ {
+ is.close();
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void execute()
+ throws MojoExecutionException
+ {
+ if ( lineLength <= 0 )
+ {
+ getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
+ lineLength = DEFAULT_LINE_LENGTH;
+ }
+ if ( indentSize <= 0 )
+ {
+ getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
+ indentSize = 2;
+ }
+
+ Document doc = build();
+
+ StringBuilder sb = new StringBuilder();
+ Node plugin = getSingleChild( doc, "plugin" );
+
+
+ String name = getValue( plugin, "name" );
+ String version = getValue( plugin, "version" );
+ String id = getValue( plugin, "groupId" ) + ":" + getValue( plugin, "artifactId" ) + ":" + version;
+ if ( isNotEmpty( name ) && !name.contains( id ) )
+ {
+ append( sb, name + " " + version, 0 );
+ }
+ else
+ {
+ if ( isNotEmpty( name ) )
+ {
+ append( sb, name, 0 );
+ }
+ else
+ {
+ append( sb, id, 0 );
+ }
+ }
+ append( sb, getValue( plugin, "description" ), 1 );
+ append( sb, "", 0 );
+
+ //<goalPrefix>plugin</goalPrefix>
+ String goalPrefix = getValue( plugin, "goalPrefix" );
+
+ Node mojos1 = getSingleChild( plugin, "mojos" );
+
+ List<Node> mojos = findNamedChild( mojos1, "mojo" );
+
+ if ( goal == null || goal.length() <= 0 )
+ {
+ append( sb, "This plugin has " + mojos.size() + ( mojos.size() > 1 ? " goals:" : " goal:" ), 0 );
+ append( sb, "", 0 );
+ }
+
+ for ( Node mojo : mojos )
+ {
+ writeGoal( sb, goalPrefix, (Element) mojo );
+ }
+
+ if ( getLog().isInfoEnabled() )
+ {
+ getLog().info( sb.toString() );
+ }
+ }
+
+
+ private static boolean isNotEmpty( String string )
+ {
+ return string != null && string.length() > 0;
+ }
+
+ private String getValue( Node node, String elementName )
+ throws MojoExecutionException
+ {
+ return getSingleChild( node, elementName ).getTextContent();
+ }
+
+ private Node getSingleChild( Node node, String elementName )
+ throws MojoExecutionException
+ {
+ List<Node> namedChild = findNamedChild( node, elementName );
+ if ( namedChild.isEmpty() )
+ {
+ throw new MojoExecutionException( "Could not find " + elementName + " in plugin-help.xml" );
+ }
+ if ( namedChild.size() > 1 )
+ {
+ throw new MojoExecutionException( "Multiple " + elementName + " in plugin-help.xml" );
+ }
+ return namedChild.get( 0 );
+ }
+
+ private List<Node> findNamedChild( Node node, String elementName )
+ {
+ List<Node> result = new ArrayList<Node>();
+ NodeList childNodes = node.getChildNodes();
+ for ( int i = 0; i < childNodes.getLength(); i++ )
+ {
+ Node item = childNodes.item( i );
+ if ( elementName.equals( item.getNodeName() ) )
+ {
+ result.add( item );
+ }
+ }
+ return result;
+ }
+
+ private Node findSingleChild( Node node, String elementName )
+ throws MojoExecutionException
+ {
+ List<Node> elementsByTagName = findNamedChild( node, elementName );
+ if ( elementsByTagName.isEmpty() )
+ {
+ return null;
+ }
+ if ( elementsByTagName.size() > 1 )
+ {
+ throw new MojoExecutionException( "Multiple " + elementName + "in plugin-help.xml" );
+ }
+ return elementsByTagName.get( 0 );
+ }
+
+ private void writeGoal( StringBuilder sb, String goalPrefix, Element mojo )
+ throws MojoExecutionException
+ {
+ String mojoGoal = getValue( mojo, "goal" );
+ Node configurationElement = findSingleChild( mojo, "configuration" );
+ Node description = findSingleChild( mojo, "description" );
+ if ( goal == null || goal.length() <= 0 || mojoGoal.equals( goal ) )
+ {
+ append( sb, goalPrefix + ":" + mojoGoal, 0 );
+ Node deprecated = findSingleChild( mojo, "deprecated" );
+ if ( ( deprecated != null ) && isNotEmpty( deprecated.getTextContent() ) )
+ {
+ append( sb, "Deprecated. " + deprecated.getTextContent(), 1 );
+ if ( detail && description != null )
+ {
+ append( sb, "", 0 );
+ append( sb, description.getTextContent(), 1 );
+ }
+ }
+ else if ( description != null )
+ {
+ append( sb, description.getTextContent(), 1 );
+ }
+ append( sb, "", 0 );
+
+ if ( detail )
+ {
+ Node parametersNode = getSingleChild( mojo, "parameters" );
+ List<Node> parameters = findNamedChild( parametersNode, "parameter" );
+ append( sb, "Available parameters:", 1 );
+ append( sb, "", 0 );
+
+ for ( Node parameter : parameters )
+ {
+ writeParameter( sb, parameter, configurationElement );
+ }
+ }
+ }
+ }
+
+ private void writeParameter( StringBuilder sb, Node parameter, Node configurationElement )
+ throws MojoExecutionException
+ {
+ String parameterName = getValue( parameter, "name" );
+ String parameterDescription = getValue( parameter, "description" );
+
+ Element fieldConfigurationElement = null;
+ if ( configurationElement != null )
+ {
+ fieldConfigurationElement = (Element) findSingleChild( configurationElement, parameterName );
+ }
+
+ String parameterDefaultValue = "";
+ if ( fieldConfigurationElement != null && fieldConfigurationElement.hasAttribute( "default-value" ) )
+ {
+ parameterDefaultValue = " (Default: " + fieldConfigurationElement.getAttribute( "default-value" ) + ")";
+ }
+ append( sb, parameterName + parameterDefaultValue, 2 );
+ Node deprecated = findSingleChild( parameter, "deprecated" );
+ if ( ( deprecated != null ) && isNotEmpty( deprecated.getTextContent() ) )
+ {
+ append( sb, "Deprecated. " + deprecated.getTextContent(), 3 );
+ append( sb, "", 0 );
+ }
+ append( sb, parameterDescription, 3 );
+ if ( "true".equals( getValue( parameter, "required" ) ) )
+ {
+ append( sb, "Required: Yes", 3 );
+ }
+ if ( ( fieldConfigurationElement != null ) && isNotEmpty( fieldConfigurationElement.getTextContent() ) )
+ {
+ String property = getPropertyFromExpression( fieldConfigurationElement.getTextContent() );
+ append( sb, "User property: " + property, 3 );
+ }
+
+ append( sb, "", 0 );
+ }
+
+ /**
+ * <p>Repeat a String <code>n</code> times to form a new string.</p>
+ *
+ * @param str String to repeat
+ * @param repeat number of times to repeat str
+ * @return String with repeated String
+ * @throws NegativeArraySizeException if <code>repeat &lt; 0</code>
+ * @throws NullPointerException if str is <code>null</code>
+ */
+ private static String repeat( String str, int repeat )
+ {
+ StringBuilder buffer = new StringBuilder( repeat * str.length() );
+
+ for ( int i = 0; i < repeat; i++ )
+ {
+ buffer.append( str );
+ }
+
+ return buffer.toString();
+ }
+
+ /**
+ * Append a description to the buffer by respecting the indentSize and lineLength parameters.
+ * <b>Note</b>: The last character is always a new line.
+ *
+ * @param sb The buffer to append the description, not <code>null</code>.
+ * @param description The description, not <code>null</code>.
+ * @param indent The base indentation level of each line, must not be negative.
+ */
+ private void append( StringBuilder sb, String description, int indent )
+ {
+ for ( String line : toLines( description, indent, indentSize, lineLength ) )
+ {
+ sb.append( line ).append( '\n' );
+ }
+ }
+
+ /**
+ * Splits the specified text into lines of convenient display length.
+ *
+ * @param text The text to split into lines, must not be <code>null</code>.
+ * @param indent The base indentation level of each line, must not be negative.
+ * @param indentSize The size of each indentation, must not be negative.
+ * @param lineLength The length of the line, must not be negative.
+ * @return The sequence of display lines, never <code>null</code>.
+ * @throws NegativeArraySizeException if <code>indent &lt; 0</code>
+ */
+ private static List<String> toLines( String text, int indent, int indentSize, int lineLength )
+ {
+ List<String> lines = new ArrayList<String>();
+
+ String ind = repeat( "\t", indent );
+
+ String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
+
+ for ( String plainLine : plainLines )
+ {
+ toLines( lines, ind + plainLine, indentSize, lineLength );
+ }
+
+ return lines;
+ }
+
+ /**
+ * Adds the specified line to the output sequence, performing line wrapping if necessary.
+ *
+ * @param lines The sequence of display lines, must not be <code>null</code>.
+ * @param line The line to add, must not be <code>null</code>.
+ * @param indentSize The size of each indentation, must not be negative.
+ * @param lineLength The length of the line, must not be negative.
+ */
+ private static void toLines( List<String> lines, String line, int indentSize, int lineLength )
+ {
+ int lineIndent = getIndentLevel( line );
+ StringBuilder buf = new StringBuilder( 256 );
+
+ String[] tokens = line.split( " +" );
+
+ for ( String token : tokens )
+ {
+ if ( buf.length() > 0 )
+ {
+ if ( buf.length() + token.length() >= lineLength )
+ {
+ lines.add( buf.toString() );
+ buf.setLength( 0 );
+ buf.append( repeat( " ", lineIndent * indentSize ) );
+ }
+ else
+ {
+ buf.append( ' ' );
+ }
+ }
+
+ for ( int j = 0; j < token.length(); j++ )
+ {
+ char c = token.charAt( j );
+ if ( c == '\t' )
+ {
+ buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
+ }
+ else if ( c == '\u00A0' )
+ {
+ buf.append( ' ' );
+ }
+ else
+ {
+ buf.append( c );
+ }
+ }
+ }
+ lines.add( buf.toString() );
+ }
+
+ /**
+ * Gets the indentation level of the specified line.
+ *
+ * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
+ * @return The indentation level of the line.
+ */
+ private static int getIndentLevel( String line )
+ {
+ int level = 0;
+ for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
+ {
+ level++;
+ }
+ for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
+ {
+ if ( line.charAt( i ) == '\t' )
+ {
+ level++;
+ break;
+ }
+ }
+ return level;
+ }
+
+ private String getPropertyFromExpression( String expression )
+ {
+ if ( expression != null && expression.startsWith( "${" ) && expression.endsWith( "}" )
+ && !expression.substring( 2 ).contains( "${" ) )
+ {
+ // expression="${xxx}" -> property="xxx"
+ return expression.substring( 2, expression.length() - 1 );
+ }
+ // no property can be extracted
+ return null;
+ }
+}
--- surefire-2.22.0/maven-surefire-report-plugin/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-surefire-report-plugin/plugin-help.xml 1970-01-01 01:00:00.000000000 +0100
+++ surefire-2.22.0/maven-surefire-report-plugin/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-surefire-report-plugin/plugin-help.xml 2019-04-01 16:35:39.497479614 +0200
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+ <name>${project.name}</name>
+ <description>${project.description}</description>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>${project.artifactId}</artifactId>
+ <version>${project.version}</version>
+ <goalPrefix>surefire-report</goalPrefix>
+ <mojos>
+ <mojo>
+ <goal>failsafe-report-only</goal>
+ <description>Creates a nicely formatted Failsafe Test Report in html format. This goal does not run the tests, it only builds the reports. See https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugins.surefire.report.FailsafeReportMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <since>2.10</since>
+ <threadSafe>false</threadSafe>
+ <parameters>
+ <parameter>
+ <name>aggregate</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>alwaysGenerateFailsafeReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format. This goal does not run the tests, it only builds the reports. See https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>description</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format. This goal does not run the tests, it only builds the reports. See https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>linkXRef</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>outputName</name>
+ <type>java.lang.String</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format. This goal does not run the tests, it only builds the reports. See https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectories</name>
+ <type>java.io.File[]</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>showSuccess</name>
+ <type>boolean</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>skipFailsafeReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format. This goal does not run the tests, it only builds the reports. See https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format. This goal does not run the tests, it only builds the reports. See https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>xrefLocation</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <aggregate implementation="boolean" default-value="false">${aggregate}</aggregate>
+ <alwaysGenerateFailsafeReport implementation="boolean" default-value="false">${alwaysGenerateFailsafeReport}</alwaysGenerateFailsafeReport>
+ <description implementation="java.lang.String" default-value="">${failsafe.report.description}</description>
+ <linkXRef implementation="boolean" default-value="true">${linkXRef}</linkXRef>
+ <outputName implementation="java.lang.String" default-value="failsafe-report">${outputName}</outputName>
+ <showSuccess implementation="boolean" default-value="true">${showSuccess}</showSuccess>
+ <skipFailsafeReport implementation="boolean" default-value="false">${skipFailsafeReport}</skipFailsafeReport>
+ <title implementation="java.lang.String" default-value="">${failsafe.report.title}</title>
+ <xrefLocation implementation="java.io.File" default-value="${project.reporting.outputDirectory}/xref-test"/>
+ </configuration>
+ </mojo>
+ <mojo>
+ <goal>help</goal>
+ <description>Display help information on maven-surefire-report-plugin.
+Call mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>false</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugins.surefire.report.HelpMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>detail</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-report-plugin.
+Call mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>goal</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-report-plugin.
+Call mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>indentSize</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-report-plugin.
+Call mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>lineLength</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-report-plugin.
+Call mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <detail implementation="boolean" default-value="false">${detail}</detail>
+ <goal implementation="java.lang.String">${goal}</goal>
+ <indentSize implementation="int" default-value="2">${indentSize}</indentSize>
+ <lineLength implementation="int" default-value="80">${lineLength}</lineLength>
+ </configuration>
+ </mojo>
+ <mojo>
+ <goal>report</goal>
+ <description>Creates a nicely formatted Surefire Test Report in html format.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>false</inheritedByDefault>
+ <executePhase>test</executePhase>
+ <executeLifecycle>surefire</executeLifecycle>
+ <implementation>org.apache.maven.plugins.surefire.report.SurefireReportMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>false</threadSafe>
+ <parameters>
+ <parameter>
+ <name>aggregate</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>alwaysGenerateSurefireReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>description</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>linkXRef</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>outputName</name>
+ <type>java.lang.String</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectories</name>
+ <type>java.io.File[]</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>showSuccess</name>
+ <type>boolean</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>skipSurefireReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>xrefLocation</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <aggregate implementation="boolean" default-value="false">${aggregate}</aggregate>
+ <alwaysGenerateSurefireReport implementation="boolean" default-value="true">${alwaysGenerateSurefireReport}</alwaysGenerateSurefireReport>
+ <description implementation="java.lang.String" default-value="">${surefire.report.description}</description>
+ <linkXRef implementation="boolean" default-value="true">${linkXRef}</linkXRef>
+ <outputName implementation="java.lang.String" default-value="surefire-report">${outputName}</outputName>
+ <showSuccess implementation="boolean" default-value="true">${showSuccess}</showSuccess>
+ <skipSurefireReport implementation="boolean" default-value="false">${skipSurefireReport}</skipSurefireReport>
+ <title implementation="java.lang.String" default-value="">${surefire.report.title}</title>
+ <xrefLocation implementation="java.io.File" default-value="${project.reporting.outputDirectory}/xref-test"/>
+ </configuration>
+ </mojo>
+ <mojo>
+ <goal>report-only</goal>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugins.surefire.report.SurefireReportOnlyMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <since>2.3</since>
+ <threadSafe>false</threadSafe>
+ <parameters>
+ <parameter>
+ <name>aggregate</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>alwaysGenerateSurefireReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>description</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>linkXRef</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>outputName</name>
+ <type>java.lang.String</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectories</name>
+ <type>java.io.File[]</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>showSuccess</name>
+ <type>boolean</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>skipSurefireReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ <parameter>
+ <name>xrefLocation</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format. This goal does not run the tests, it only builds the reports. This is a workaround for https://issues.apache.org/jira/browse/SUREFIRE-257</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <aggregate implementation="boolean" default-value="false">${aggregate}</aggregate>
+ <alwaysGenerateSurefireReport implementation="boolean" default-value="true">${alwaysGenerateSurefireReport}</alwaysGenerateSurefireReport>
+ <description implementation="java.lang.String" default-value="">${surefire.report.description}</description>
+ <linkXRef implementation="boolean" default-value="true">${linkXRef}</linkXRef>
+ <outputName implementation="java.lang.String" default-value="surefire-report">${outputName}</outputName>
+ <showSuccess implementation="boolean" default-value="true">${showSuccess}</showSuccess>
+ <skipSurefireReport implementation="boolean" default-value="false">${skipSurefireReport}</skipSurefireReport>
+ <title implementation="java.lang.String" default-value="">${surefire.report.title}</title>
+ <xrefLocation implementation="java.io.File" default-value="${project.reporting.outputDirectory}/xref-test"/>
+ </configuration>
+ </mojo>
+ </mojos>
+</plugin>
--- surefire-2.22.0/maven-surefire-report-plugin/src/main/filtered-resources/META-INF/maven/plugin.xml 1970-01-01 01:00:00.000000000 +0100
+++ surefire-2.22.0/maven-surefire-report-plugin/src/main/filtered-resources/META-INF/maven/plugin.xml 2019-04-01 16:35:39.497479614 +0200
@@ -0,0 +1,1086 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+ <name>${project.name}</name>
+ <description>${project.description}</description>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>${project.artifactId}</artifactId>
+ <version>${project.version}</version>
+ <goalPrefix>surefire-report</goalPrefix>
+ <isolatedRealm>false</isolatedRealm>
+ <inheritedByDefault>true</inheritedByDefault>
+ <mojos>
+ <mojo>
+ <goal>failsafe-report-only</goal>
+ <description>Creates a nicely formatted Failsafe Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+See &lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;
+ https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugins.surefire.report.FailsafeReportMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <since>2.10</since>
+ <threadSafe>false</threadSafe>
+ <parameters>
+ <parameter>
+ <name>aggregate</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>alwaysGenerateFailsafeReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+See &lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;
+ https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>description</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+See &lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;
+ https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>inputEncoding</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>linkXRef</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>outputDirectory</name>
+ <type>java.io.File</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>outputEncoding</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>outputName</name>
+ <type>java.lang.String</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+See &lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;
+ https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>project</name>
+ <type>org.apache.maven.project.MavenProject</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>reactorProjects</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectories</name>
+ <type>java.io.File[]</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>showSuccess</name>
+ <type>boolean</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>skipFailsafeReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+See &lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;
+ https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Failsafe Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+See &lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;
+ https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>xrefLocation</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <aggregate implementation="boolean" default-value="false">${aggregate}</aggregate>
+ <alwaysGenerateFailsafeReport implementation="boolean" default-value="false">${alwaysGenerateFailsafeReport}</alwaysGenerateFailsafeReport>
+ <description implementation="java.lang.String" default-value="">${failsafe.report.description}</description>
+ <inputEncoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}">${encoding}</inputEncoding>
+ <linkXRef implementation="boolean" default-value="true">${linkXRef}</linkXRef>
+ <outputDirectory implementation="java.io.File" default-value="${project.reporting.outputDirectory}"/>
+ <outputEncoding implementation="java.lang.String" default-value="${project.reporting.outputEncoding}">${outputEncoding}</outputEncoding>
+ <outputName implementation="java.lang.String" default-value="failsafe-report">${outputName}</outputName>
+ <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
+ <reactorProjects implementation="java.util.List" default-value="${reactorProjects}"/>
+ <showSuccess implementation="boolean" default-value="true">${showSuccess}</showSuccess>
+ <skipFailsafeReport implementation="boolean" default-value="false">${skipFailsafeReport}</skipFailsafeReport>
+ <title implementation="java.lang.String" default-value="">${failsafe.report.title}</title>
+ <xrefLocation implementation="java.io.File" default-value="${project.reporting.outputDirectory}/xref-test"/>
+ </configuration>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.doxia.siterenderer.Renderer</role>
+ <field-name>siteRenderer</field-name>
+ </requirement>
+ </requirements>
+ </mojo>
+ <mojo>
+ <goal>help</goal>
+ <description>Display help information on maven-surefire-report-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire-report:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>false</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugins.surefire.report.HelpMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>true</threadSafe>
+ <parameters>
+ <parameter>
+ <name>detail</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-report-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire-report:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>goal</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-report-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire-report:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>indentSize</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-report-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire-report:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ <parameter>
+ <name>lineLength</name>
+ <type>int</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Display help information on maven-surefire-report-plugin.&lt;br&gt;
+Call &lt;code&gt;mvn surefire-report:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <detail implementation="boolean" default-value="false">${detail}</detail>
+ <goal implementation="java.lang.String">${goal}</goal>
+ <indentSize implementation="int" default-value="2">${indentSize}</indentSize>
+ <lineLength implementation="int" default-value="80">${lineLength}</lineLength>
+ </configuration>
+ </mojo>
+ <mojo>
+ <goal>report</goal>
+ <description>Creates a nicely formatted Surefire Test Report in html format.</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>false</inheritedByDefault>
+ <executePhase>test</executePhase>
+ <executeLifecycle>surefire</executeLifecycle>
+ <implementation>org.apache.maven.plugins.surefire.report.SurefireReportMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <threadSafe>false</threadSafe>
+ <parameters>
+ <parameter>
+ <name>aggregate</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>alwaysGenerateSurefireReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>description</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>inputEncoding</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>linkXRef</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>outputDirectory</name>
+ <type>java.io.File</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>outputEncoding</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>outputName</name>
+ <type>java.lang.String</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>project</name>
+ <type>org.apache.maven.project.MavenProject</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>reactorProjects</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectories</name>
+ <type>java.io.File[]</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>showSuccess</name>
+ <type>boolean</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>skipSurefireReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>xrefLocation</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <aggregate implementation="boolean" default-value="false">${aggregate}</aggregate>
+ <alwaysGenerateSurefireReport implementation="boolean" default-value="true">${alwaysGenerateSurefireReport}</alwaysGenerateSurefireReport>
+ <description implementation="java.lang.String" default-value="">${surefire.report.description}</description>
+ <inputEncoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}">${encoding}</inputEncoding>
+ <linkXRef implementation="boolean" default-value="true">${linkXRef}</linkXRef>
+ <outputDirectory implementation="java.io.File" default-value="${project.reporting.outputDirectory}"/>
+ <outputEncoding implementation="java.lang.String" default-value="${project.reporting.outputEncoding}">${outputEncoding}</outputEncoding>
+ <outputName implementation="java.lang.String" default-value="surefire-report">${outputName}</outputName>
+ <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
+ <reactorProjects implementation="java.util.List" default-value="${reactorProjects}"/>
+ <showSuccess implementation="boolean" default-value="true">${showSuccess}</showSuccess>
+ <skipSurefireReport implementation="boolean" default-value="false">${skipSurefireReport}</skipSurefireReport>
+ <title implementation="java.lang.String" default-value="">${surefire.report.title}</title>
+ <xrefLocation implementation="java.io.File" default-value="${project.reporting.outputDirectory}/xref-test"/>
+ </configuration>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.doxia.siterenderer.Renderer</role>
+ <field-name>siteRenderer</field-name>
+ </requirement>
+ </requirements>
+ </mojo>
+ <mojo>
+ <goal>report-only</goal>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ <requiresDirectInvocation>false</requiresDirectInvocation>
+ <requiresProject>true</requiresProject>
+ <requiresReports>false</requiresReports>
+ <aggregator>false</aggregator>
+ <requiresOnline>false</requiresOnline>
+ <inheritedByDefault>true</inheritedByDefault>
+ <implementation>org.apache.maven.plugins.surefire.report.SurefireReportOnlyMojo</implementation>
+ <language>java</language>
+ <instantiationStrategy>per-lookup</instantiationStrategy>
+ <executionStrategy>once-per-session</executionStrategy>
+ <since>2.3</since>
+ <threadSafe>false</threadSafe>
+ <parameters>
+ <parameter>
+ <name>aggregate</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>alwaysGenerateSurefireReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>description</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>inputEncoding</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>linkXRef</name>
+ <type>boolean</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>outputDirectory</name>
+ <type>java.io.File</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>outputEncoding</name>
+ <type>java.lang.String</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>outputName</name>
+ <type>java.lang.String</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>project</name>
+ <type>org.apache.maven.project.MavenProject</type>
+ <required>true</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>reactorProjects</name>
+ <type>java.util.List</type>
+ <required>false</required>
+ <editable>false</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectories</name>
+ <type>java.io.File[]</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>reportsDirectory</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>showSuccess</name>
+ <type>boolean</type>
+ <required>true</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>skipSurefireReport</name>
+ <type>boolean</type>
+ <since>2.11</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <type>java.lang.String</type>
+ <since>2.21.0</since>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ <parameter>
+ <name>xrefLocation</name>
+ <type>java.io.File</type>
+ <required>false</required>
+ <editable>true</editable>
+ <description>Creates a nicely formatted Surefire Test Report in html format.
+This goal does not run the tests, it only builds the reports.
+This is a workaround for
+&lt;a href=&quot;https://issues.apache.org/jira/browse/SUREFIRE-257&quot;&gt;https://issues.apache.org/jira/browse/SUREFIRE-257&lt;/a&gt;</description>
+ </parameter>
+ </parameters>
+ <configuration>
+ <aggregate implementation="boolean" default-value="false">${aggregate}</aggregate>
+ <alwaysGenerateSurefireReport implementation="boolean" default-value="true">${alwaysGenerateSurefireReport}</alwaysGenerateSurefireReport>
+ <description implementation="java.lang.String" default-value="">${surefire.report.description}</description>
+ <inputEncoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}">${encoding}</inputEncoding>
+ <linkXRef implementation="boolean" default-value="true">${linkXRef}</linkXRef>
+ <outputDirectory implementation="java.io.File" default-value="${project.reporting.outputDirectory}"/>
+ <outputEncoding implementation="java.lang.String" default-value="${project.reporting.outputEncoding}">${outputEncoding}</outputEncoding>
+ <outputName implementation="java.lang.String" default-value="surefire-report">${outputName}</outputName>
+ <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
+ <reactorProjects implementation="java.util.List" default-value="${reactorProjects}"/>
+ <showSuccess implementation="boolean" default-value="true">${showSuccess}</showSuccess>
+ <skipSurefireReport implementation="boolean" default-value="false">${skipSurefireReport}</skipSurefireReport>
+ <title implementation="java.lang.String" default-value="">${surefire.report.title}</title>
+ <xrefLocation implementation="java.io.File" default-value="${project.reporting.outputDirectory}/xref-test"/>
+ </configuration>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.doxia.siterenderer.Renderer</role>
+ <field-name>siteRenderer</field-name>
+ </requirement>
+ </requirements>
+ </mojo>
+ </mojos>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <type>jar</type>
+ <version>3.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-classworlds</artifactId>
+ <type>jar</type>
+ <version>2.5.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.plexus</artifactId>
+ <type>jar</type>
+ <version>0.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.inject</artifactId>
+ <type>jar</type>
+ <version>0.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.enterprise</groupId>
+ <artifactId>cdi-api</artifactId>
+ <type>jar</type>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.el</groupId>
+ <artifactId>javax.el-api</artifactId>
+ <type>jar</type>
+ <version>3.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.spec.javax.interceptor</groupId>
+ <artifactId>jboss-interceptors-api_1.2_spec</artifactId>
+ <type>jar</type>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-annotations</artifactId>
+ <type>jar</type>
+ <version>3.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-compat</artifactId>
+ <type>jar</type>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-settings</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model-builder</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-repository-metadata</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-interpolation</artifactId>
+ <type>jar</type>
+ <version>1.24</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-provider-api</artifactId>
+ <type>jar</type>
+ <version>3.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-resolver-provider</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-api</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-util</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-impl</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <type>jar</type>
+ <version>1.7.25</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-settings-builder</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.sonatype.plexus</groupId>
+ <artifactId>plexus-sec-dispatcher</artifactId>
+ <type>jar</type>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.sonatype.plexus</groupId>
+ <artifactId>plexus-cipher</artifactId>
+ <type>jar</type>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <type>jar</type>
+ <version>4.12</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-core</artifactId>
+ <type>jar</type>
+ <version>1.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-report-parser</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-logger-api</artifactId>
+ <type>jar</type>
+ <version>2.22.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.reporting</groupId>
+ <artifactId>maven-reporting-api</artifactId>
+ <type>jar</type>
+ <version>3.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.reporting</groupId>
+ <artifactId>maven-reporting-impl</artifactId>
+ <type>jar</type>
+ <version>2.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.doxia</groupId>
+ <artifactId>doxia-decoration-model</artifactId>
+ <type>jar</type>
+ <version>1.7.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <type>jar</type>
+ <version>3.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <type>jar</type>
+ <version>20.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ <type>jar</type>
+ <version>4.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>aopalliance</groupId>
+ <artifactId>aopalliance</artifactId>
+ <type>jar</type>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ <type>jar</type>
+ <version>3.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <type>jar</type>
+ <version>1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-spi</artifactId>
+ <type>jar</type>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-builder-support</artifactId>
+ <type>jar</type>
+ <version>3.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.doxia</groupId>
+ <artifactId>doxia-core</artifactId>
+ <type>jar</type>
+ <version>1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>xmlunit</groupId>
+ <artifactId>xmlunit</artifactId>
+ <type>jar</type>
+ <version>1.5</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <type>jar</type>
+ <version>2.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <type>jar</type>
+ <version>4.0.2</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <type>jar</type>
+ <version>SYSTEM</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <type>jar</type>
+ <version>SYSTEM</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpcore</artifactId>
+ <type>jar</type>
+ <version>4.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-shared-utils</artifactId>
+ <type>jar</type>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <type>jar</type>
+ <version>2.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.doxia</groupId>
+ <artifactId>doxia-sink-api</artifactId>
+ <type>jar</type>
+ <version>1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.doxia</groupId>
+ <artifactId>doxia-site-renderer</artifactId>
+ <type>jar</type>
+ <version>1.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.doxia</groupId>
+ <artifactId>doxia-logging-api</artifactId>
+ <type>jar</type>
+ <version>1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <type>jar</type>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-velocity</artifactId>
+ <type>jar</type>
+ <version>1.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-i18n</artifactId>
+ <type>jar</type>
+ <version>1.0-beta-7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.doxia</groupId>
+ <artifactId>doxia-module-xhtml</artifactId>
+ <type>jar</type>
+ <version>1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-container-default</artifactId>
+ <type>jar</type>
+ <version>1.0-alpha-30</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm-commons</artifactId>
+ <type>jar</type>
+ <version>5.0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm-tree</artifactId>
+ <type>jar</type>
+ <version>6.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm-analysis</artifactId>
+ <type>jar</type>
+ <version>6.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm</artifactId>
+ <type>jar</type>
+ <version>5.0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-reflect</artifactId>
+ <type>jar</type>
+ <version>3.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.velocity</groupId>
+ <artifactId>velocity</artifactId>
+ <type>jar</type>
+ <version>1.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-annotations</artifactId>
+ <type>jar</type>
+ <version>1.5.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.doxia</groupId>
+ <artifactId>doxia-skin-model</artifactId>
+ <type>jar</type>
+ <version>1.7.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <type>jar</type>
+ <version>3.0.15</version>
+ </dependency>
+ </dependencies>
+</plugin>
--- surefire-2.22.0/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/HelpMojo.java 1970-01-01 01:00:00.000000000 +0100
+++ surefire-2.22.0/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/HelpMojo.java 2019-04-01 16:38:38.246383508 +0200
@@ -0,0 +1,458 @@
+
+package org.apache.maven.plugins.surefire.report;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Display help information on maven-surefire-report-plugin.<br>
+ * Call <code>mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> to display parameter details.
+ * @author maven-plugin-tools
+ */
+@Mojo( name = "help", requiresProject = false, threadSafe = true )
+public class HelpMojo
+ extends AbstractMojo
+{
+ /**
+ * If <code>true</code>, display all settable properties for each goal.
+ *
+ */
+ @Parameter( property = "detail", defaultValue = "false" )
+ private boolean detail;
+
+ /**
+ * The name of the goal for which to show help. If unspecified, all goals will be displayed.
+ *
+ */
+ @Parameter( property = "goal" )
+ private java.lang.String goal;
+
+ /**
+ * The maximum length of a display line, should be positive.
+ *
+ */
+ @Parameter( property = "lineLength", defaultValue = "80" )
+ private int lineLength;
+
+ /**
+ * The number of spaces per indentation level, should be positive.
+ *
+ */
+ @Parameter( property = "indentSize", defaultValue = "2" )
+ private int indentSize;
+
+ // groupId/artifactId/plugin-help.xml
+ private static final String PLUGIN_HELP_PATH =
+ "/META-INF/maven/org.apache.maven.plugins/maven-surefire-report-plugin/plugin-help.xml";
+
+ private static final int DEFAULT_LINE_LENGTH = 80;
+
+ private Document build()
+ throws MojoExecutionException
+ {
+ getLog().debug( "load plugin-help.xml: " + PLUGIN_HELP_PATH );
+ InputStream is = null;
+ try
+ {
+ is = getClass().getResourceAsStream( PLUGIN_HELP_PATH );
+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+ return dBuilder.parse( is );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ catch ( ParserConfigurationException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ catch ( SAXException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ finally
+ {
+ if ( is != null )
+ {
+ try
+ {
+ is.close();
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void execute()
+ throws MojoExecutionException
+ {
+ if ( lineLength <= 0 )
+ {
+ getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
+ lineLength = DEFAULT_LINE_LENGTH;
+ }
+ if ( indentSize <= 0 )
+ {
+ getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
+ indentSize = 2;
+ }
+
+ Document doc = build();
+
+ StringBuilder sb = new StringBuilder();
+ Node plugin = getSingleChild( doc, "plugin" );
+
+
+ String name = getValue( plugin, "name" );
+ String version = getValue( plugin, "version" );
+ String id = getValue( plugin, "groupId" ) + ":" + getValue( plugin, "artifactId" ) + ":" + version;
+ if ( isNotEmpty( name ) && !name.contains( id ) )
+ {
+ append( sb, name + " " + version, 0 );
+ }
+ else
+ {
+ if ( isNotEmpty( name ) )
+ {
+ append( sb, name, 0 );
+ }
+ else
+ {
+ append( sb, id, 0 );
+ }
+ }
+ append( sb, getValue( plugin, "description" ), 1 );
+ append( sb, "", 0 );
+
+ //<goalPrefix>plugin</goalPrefix>
+ String goalPrefix = getValue( plugin, "goalPrefix" );
+
+ Node mojos1 = getSingleChild( plugin, "mojos" );
+
+ List<Node> mojos = findNamedChild( mojos1, "mojo" );
+
+ if ( goal == null || goal.length() <= 0 )
+ {
+ append( sb, "This plugin has " + mojos.size() + ( mojos.size() > 1 ? " goals:" : " goal:" ), 0 );
+ append( sb, "", 0 );
+ }
+
+ for ( Node mojo : mojos )
+ {
+ writeGoal( sb, goalPrefix, (Element) mojo );
+ }
+
+ if ( getLog().isInfoEnabled() )
+ {
+ getLog().info( sb.toString() );
+ }
+ }
+
+
+ private static boolean isNotEmpty( String string )
+ {
+ return string != null && string.length() > 0;
+ }
+
+ private String getValue( Node node, String elementName )
+ throws MojoExecutionException
+ {
+ return getSingleChild( node, elementName ).getTextContent();
+ }
+
+ private Node getSingleChild( Node node, String elementName )
+ throws MojoExecutionException
+ {
+ List<Node> namedChild = findNamedChild( node, elementName );
+ if ( namedChild.isEmpty() )
+ {
+ throw new MojoExecutionException( "Could not find " + elementName + " in plugin-help.xml" );
+ }
+ if ( namedChild.size() > 1 )
+ {
+ throw new MojoExecutionException( "Multiple " + elementName + " in plugin-help.xml" );
+ }
+ return namedChild.get( 0 );
+ }
+
+ private List<Node> findNamedChild( Node node, String elementName )
+ {
+ List<Node> result = new ArrayList<Node>();
+ NodeList childNodes = node.getChildNodes();
+ for ( int i = 0; i < childNodes.getLength(); i++ )
+ {
+ Node item = childNodes.item( i );
+ if ( elementName.equals( item.getNodeName() ) )
+ {
+ result.add( item );
+ }
+ }
+ return result;
+ }
+
+ private Node findSingleChild( Node node, String elementName )
+ throws MojoExecutionException
+ {
+ List<Node> elementsByTagName = findNamedChild( node, elementName );
+ if ( elementsByTagName.isEmpty() )
+ {
+ return null;
+ }
+ if ( elementsByTagName.size() > 1 )
+ {
+ throw new MojoExecutionException( "Multiple " + elementName + "in plugin-help.xml" );
+ }
+ return elementsByTagName.get( 0 );
+ }
+
+ private void writeGoal( StringBuilder sb, String goalPrefix, Element mojo )
+ throws MojoExecutionException
+ {
+ String mojoGoal = getValue( mojo, "goal" );
+ Node configurationElement = findSingleChild( mojo, "configuration" );
+ Node description = findSingleChild( mojo, "description" );
+ if ( goal == null || goal.length() <= 0 || mojoGoal.equals( goal ) )
+ {
+ append( sb, goalPrefix + ":" + mojoGoal, 0 );
+ Node deprecated = findSingleChild( mojo, "deprecated" );
+ if ( ( deprecated != null ) && isNotEmpty( deprecated.getTextContent() ) )
+ {
+ append( sb, "Deprecated. " + deprecated.getTextContent(), 1 );
+ if ( detail && description != null )
+ {
+ append( sb, "", 0 );
+ append( sb, description.getTextContent(), 1 );
+ }
+ }
+ else if ( description != null )
+ {
+ append( sb, description.getTextContent(), 1 );
+ }
+ append( sb, "", 0 );
+
+ if ( detail )
+ {
+ Node parametersNode = getSingleChild( mojo, "parameters" );
+ List<Node> parameters = findNamedChild( parametersNode, "parameter" );
+ append( sb, "Available parameters:", 1 );
+ append( sb, "", 0 );
+
+ for ( Node parameter : parameters )
+ {
+ writeParameter( sb, parameter, configurationElement );
+ }
+ }
+ }
+ }
+
+ private void writeParameter( StringBuilder sb, Node parameter, Node configurationElement )
+ throws MojoExecutionException
+ {
+ String parameterName = getValue( parameter, "name" );
+ String parameterDescription = getValue( parameter, "description" );
+
+ Element fieldConfigurationElement = null;
+ if ( configurationElement != null )
+ {
+ fieldConfigurationElement = (Element) findSingleChild( configurationElement, parameterName );
+ }
+
+ String parameterDefaultValue = "";
+ if ( fieldConfigurationElement != null && fieldConfigurationElement.hasAttribute( "default-value" ) )
+ {
+ parameterDefaultValue = " (Default: " + fieldConfigurationElement.getAttribute( "default-value" ) + ")";
+ }
+ append( sb, parameterName + parameterDefaultValue, 2 );
+ Node deprecated = findSingleChild( parameter, "deprecated" );
+ if ( ( deprecated != null ) && isNotEmpty( deprecated.getTextContent() ) )
+ {
+ append( sb, "Deprecated. " + deprecated.getTextContent(), 3 );
+ append( sb, "", 0 );
+ }
+ append( sb, parameterDescription, 3 );
+ if ( "true".equals( getValue( parameter, "required" ) ) )
+ {
+ append( sb, "Required: Yes", 3 );
+ }
+ if ( ( fieldConfigurationElement != null ) && isNotEmpty( fieldConfigurationElement.getTextContent() ) )
+ {
+ String property = getPropertyFromExpression( fieldConfigurationElement.getTextContent() );
+ append( sb, "User property: " + property, 3 );
+ }
+
+ append( sb, "", 0 );
+ }
+
+ /**
+ * <p>Repeat a String <code>n</code> times to form a new string.</p>
+ *
+ * @param str String to repeat
+ * @param repeat number of times to repeat str
+ * @return String with repeated String
+ * @throws NegativeArraySizeException if <code>repeat &lt; 0</code>
+ * @throws NullPointerException if str is <code>null</code>
+ */
+ private static String repeat( String str, int repeat )
+ {
+ StringBuilder buffer = new StringBuilder( repeat * str.length() );
+
+ for ( int i = 0; i < repeat; i++ )
+ {
+ buffer.append( str );
+ }
+
+ return buffer.toString();
+ }
+
+ /**
+ * Append a description to the buffer by respecting the indentSize and lineLength parameters.
+ * <b>Note</b>: The last character is always a new line.
+ *
+ * @param sb The buffer to append the description, not <code>null</code>.
+ * @param description The description, not <code>null</code>.
+ * @param indent The base indentation level of each line, must not be negative.
+ */
+ private void append( StringBuilder sb, String description, int indent )
+ {
+ for ( String line : toLines( description, indent, indentSize, lineLength ) )
+ {
+ sb.append( line ).append( '\n' );
+ }
+ }
+
+ /**
+ * Splits the specified text into lines of convenient display length.
+ *
+ * @param text The text to split into lines, must not be <code>null</code>.
+ * @param indent The base indentation level of each line, must not be negative.
+ * @param indentSize The size of each indentation, must not be negative.
+ * @param lineLength The length of the line, must not be negative.
+ * @return The sequence of display lines, never <code>null</code>.
+ * @throws NegativeArraySizeException if <code>indent &lt; 0</code>
+ */
+ private static List<String> toLines( String text, int indent, int indentSize, int lineLength )
+ {
+ List<String> lines = new ArrayList<String>();
+
+ String ind = repeat( "\t", indent );
+
+ String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
+
+ for ( String plainLine : plainLines )
+ {
+ toLines( lines, ind + plainLine, indentSize, lineLength );
+ }
+
+ return lines;
+ }
+
+ /**
+ * Adds the specified line to the output sequence, performing line wrapping if necessary.
+ *
+ * @param lines The sequence of display lines, must not be <code>null</code>.
+ * @param line The line to add, must not be <code>null</code>.
+ * @param indentSize The size of each indentation, must not be negative.
+ * @param lineLength The length of the line, must not be negative.
+ */
+ private static void toLines( List<String> lines, String line, int indentSize, int lineLength )
+ {
+ int lineIndent = getIndentLevel( line );
+ StringBuilder buf = new StringBuilder( 256 );
+
+ String[] tokens = line.split( " +" );
+
+ for ( String token : tokens )
+ {
+ if ( buf.length() > 0 )
+ {
+ if ( buf.length() + token.length() >= lineLength )
+ {
+ lines.add( buf.toString() );
+ buf.setLength( 0 );
+ buf.append( repeat( " ", lineIndent * indentSize ) );
+ }
+ else
+ {
+ buf.append( ' ' );
+ }
+ }
+
+ for ( int j = 0; j < token.length(); j++ )
+ {
+ char c = token.charAt( j );
+ if ( c == '\t' )
+ {
+ buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
+ }
+ else if ( c == '\u00A0' )
+ {
+ buf.append( ' ' );
+ }
+ else
+ {
+ buf.append( c );
+ }
+ }
+ }
+ lines.add( buf.toString() );
+ }
+
+ /**
+ * Gets the indentation level of the specified line.
+ *
+ * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
+ * @return The indentation level of the line.
+ */
+ private static int getIndentLevel( String line )
+ {
+ int level = 0;
+ for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
+ {
+ level++;
+ }
+ for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
+ {
+ if ( line.charAt( i ) == '\t' )
+ {
+ level++;
+ break;
+ }
+ }
+ return level;
+ }
+
+ private String getPropertyFromExpression( String expression )
+ {
+ if ( expression != null && expression.startsWith( "${" ) && expression.endsWith( "}" )
+ && !expression.substring( 2 ).contains( "${" ) )
+ {
+ // expression="${xxx}" -> property="xxx"
+ return expression.substring( 2, expression.length() - 1 );
+ }
+ // no property can be extracted
+ return null;
+ }
+}