[ https://issues.apache.org/jira/browse/SUREFIRE-1396?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16107883#comment-16107883 ]
ASF GitHub Bot commented on SUREFIRE-1396: ------------------------------------------ Github user Tibor17 commented on a diff in the pull request: https://github.com/apache/maven-surefire/pull/161#discussion_r130447743 --- Diff: maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java --- @@ -2755,7 +2755,16 @@ public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { final Map<String, Artifact> pluginArtifactMap = getPluginArtifactMap(); - Artifact plugin = pluginArtifactMap.get( "org.apache.maven.plugins:maven-surefire-plugin" ); + Class<?> c = AbstractSurefireMojo.this.getClass(); + Artifact plugin; + if ( c.getName().equals( "org.apache.maven.plugin.failsafe.IntegrationTestMojo" ) ) --- End diff -- I guess this is in method `getProviderClasspath()` Please split the method in two. First it would call `protected abstract Artifact getMojoArtifact()` and then the original statement `return dependencyResolver.addProviderToClasspath( pluginArtifactMap, plugin );` where `plugin` is `Artifact`. Then force both subclasse to implement `getMojoArtifact` which means surefire mojo will implement it as follows: `final Map<String, Artifact> pluginArtifactMap = getPluginArtifactMap(); Artifact plugin = pluginArtifactMap.get( "org.apache.maven.plugins:maven-surefire-plugin" );`. > Provider class path is incorrect for custom provider in Failsafe > ---------------------------------------------------------------- > > Key: SUREFIRE-1396 > URL: https://issues.apache.org/jira/browse/SUREFIRE-1396 > Project: Maven Surefire > Issue Type: Bug > Reporter: Jonathan Bell > > Hi, > When using a custom Surefire provider with Surefire (not Failsafe), the > "provider classpath" contains only the provider and surefire-api. However, > when using a custom provider with Failsafe, the provider class path ends up > including a lot more... it seems like perhaps all plugins that are loaded? > This has caused some mayhem for me when using a custom provider in projects > that use a specific version of SLF4J... because then failsafe forces 1.5.6 to > be loaded (from this process of incorrectly finding the custom provider), > causing a crash. > It is a simple fix (3 lines in AbstractSurefireMojo - it had the name of the > Surefire plugin hardcoded, which isn't correct when it's actually Failsafe). > I've got a patched fork of master on GitHub > (https://github.com/jon-bell/maven-surefire/commit/04f66cdd828d131a028eb400d1ed26fe104fe3f2) > that fixes it and an integration test that demonstrates the flaw. I am not > 100% sure on the formatting of the integration test (i.e., I am opening a > JIRA ticket so that I suppose I can name it under the JIRA issue? How should > I specify the current version of surefire in the integration test package?) - > if the fix is welcome against master I'd be happy to open a PR on GitHub. I > am also happy to merge against a different branch if it's more helpful. -- This message was sent by Atlassian JIRA (v6.4.14#64029)