Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:obsgeek0:repos:ALP
maven-surefire
maven-surefire-bootstrap-resources.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File maven-surefire-bootstrap-resources.patch of Package maven-surefire
--- 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=<goal-name> 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=<goal-name> 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=<goal-name> 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=<goal-name> 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=<goal-name> 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.<br> +Call <code>mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn failsafe:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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=<goal-name></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 < 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 < 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=<goal-name> 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=<goal-name> 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=<goal-name> 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=<goal-name> 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=<goal-name> 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.<br> +Call <code>mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn surefire:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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=<goal-name></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 < 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 < 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=<goal-name> 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=<goal-name> 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=<goal-name> 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=<goal-name> 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=<goal-name> 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 <a href="https://issues.apache.org/jira/browse/SUREFIRE-257"> + https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 <a href="https://issues.apache.org/jira/browse/SUREFIRE-257"> + https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 <a href="https://issues.apache.org/jira/browse/SUREFIRE-257"> + https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 <a href="https://issues.apache.org/jira/browse/SUREFIRE-257"> + https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 <a href="https://issues.apache.org/jira/browse/SUREFIRE-257"> + https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 <a href="https://issues.apache.org/jira/browse/SUREFIRE-257"> + https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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.<br> +Call <code>mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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.<br> +Call <code>mvn surefire-report:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> 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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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 +<a href="https://issues.apache.org/jira/browse/SUREFIRE-257">https://issues.apache.org/jira/browse/SUREFIRE-257</a></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=<goal-name></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 < 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 < 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; + } +}
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor