Hi Robert, I fixed the transitive artifact resolution. See the branch 3.0-rc1. The only remaining to fix is Java packages relocation of *-shared artifacts in maven-surefire-common.
Cheers Tibor On Sun, Jan 17, 2016 at 8:09 PM, Tibor Digana <[email protected]> wrote: > I used transformer > > <transformers> > <transformer > implementation="org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformer"> > > </transformer> > </transformers> > > which threw exception in maven-surefire-plugin runtime : > > > *[WARNING] Error injecting: > org.apache.maven.surefire.shade.org.apache.maven.shared.artifact.resolve.internal.DefaultArtifactResolverjava.lang.TypeNotPresentException: > Type > org.apache.maven.surefire.shade.org.apache.maven.shared.artifact.resolve.internal.DefaultArtifactResolver > not present* > > *Caused by: java.lang.ClassNotFoundException: > org.apache.maven.surefire.shade.org.apache.maven.shared.artifact.resolve.internal.DefaultArtifactResolver* > > > After these experiences I decided to simplify something to have a progress > and removed transformer and packages reallocation. > The surefire runtime is not able to find internal class which should be > fixed first. > *java.lang.NoClassDefFoundError: > org/apache/maven/surefire/common/junit48/JUnit48TestChecker: > org.apache.maven.surefire.common.junit48.JUnit48TestChecker -> [Help 1]* > > This means the transitive dependency of provider surefire-junit47 was not > propagated to the classpath of Forked JVM. > It means it's a bug in my latest commit as it seems. > After this we should make repackaging working again. > > Cheers > Tibor > > > > > On Sun, Jan 17, 2016 at 6:29 PM, Robert Scholte <[email protected]> > wrote: > >> Hi Tibor, >> >> I actually had the same question about the other dependencies which are >> shaded. >> Based on the exception I would expect that you need a transformer[1], >> based on the excepted I would say the PluginXmlResourceTransformer >> (otherwise ComponentsXmlResourceTransformer). >> The other option is to finetune the relocation pattern, since >> org.apache.maven.share also shades the packages of maven-artifact-transfer. >> >> thanks, >> Robert >> >> [1] >> http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html >> >> >> Op Sun, 17 Jan 2016 17:56:44 +0100 schreef Tibor Digana < >> [email protected]>: >> >> >> Hi Robert, >>> >>> A new problem with maven-artifact-transfer. >>> Should we really shade it? >>> Not able to inject ArtifactResolver as it seems: >>> >>> [INFO] --- maven-surefire-plugin:2.19.2-SNAPSHOT:test (default-test) @ >>> child --- >>> [WARNING] Error injecting: >>> org.apache.maven.plugin.surefire.SurefirePlugin >>> com.google.inject.ProvisionException: Guice provision errors: >>> >>> 1) No implementation for >>> >>> org.apache.maven.surefire.shade.org.apache.maven.shared.artifact.resolve.ArtifactResolver >>> was bound. >>> while locating org.apache.maven.plugin.surefire.SurefirePlugin >>> >>> 1 error >>> at >>> com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1006) >>> at >>> >>> com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1032) >>> at >>> >>> org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48) >>> at >>> >>> com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:86) >>> at >>> >>> com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:55) >>> at >>> >>> com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:70) >>> at >>> >>> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:100) >>> at >>> >>> org.eclipse.sisu.plexus.PlexusLifecycleManager.onProvision(PlexusLifecycleManager.java:133) >>> at >>> >>> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109) >>> at >>> >>> com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:55) >>> at >>> >>> com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:68) >>> at >>> >>> com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47) >>> at >>> com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:997) >>> at >>> >>> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1047) >>> at >>> com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:993) >>> at com.google.inject.Scopes$1$1.get(Scopes.java:59) >>> at >>> org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:82) >>> at >>> org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51) >>> at >>> >>> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:260) >>> at >>> >>> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:252) >>> at >>> >>> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:462) >>> at >>> >>> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:120) >>> at >>> >>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) >>> at >>> >>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) >>> at >>> >>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) >>> at >>> >>> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108) >>> at >>> >>> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76) >>> at >>> >>> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) >>> at >>> >>> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116) >>> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361) >>> at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155) >>> at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) >>> at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213) >>> at org.apache.maven.cli.MavenCli.main(MavenCli.java:157) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>> at >>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>> at java.lang.reflect.Method.invoke(Method.java:497) >>> at >>> >>> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) >>> at >>> >>> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) >>> at >>> >>> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) >>> at >>> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) >>> at org.codehaus.classworlds.Launcher.main(Launcher.java:46) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>> at >>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>> at java.lang.reflect.Method.invoke(Method.java:497) >>> at >>> com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] BUILD FAILURE >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Total time: 1.702 s >>> [INFO] Finished at: 2016-01-17T17:53:06+01:00 >>> [INFO] Final Memory: 9M/155M >>> [INFO] >>> ------------------------------------------------------------------------ >>> [ERROR] Failed to execute goal >>> org.apache.maven.plugins:maven-surefire-plugin:2.19.2-SNAPSHOT:test >>> (default-test) on project child: Execution default-test of goal >>> org.apache.maven.plugins:maven-surefire-plugin:2.19.2-SNAPSHOT:test >>> failed: >>> Unable to load the mojo 'test' (or one of its required components) from >>> the >>> plugin 'org.apache.maven.plugins:maven-surefire-plugin:2.19.2-SNAPSHOT': >>> com.google.inject.ProvisionException: Guice provision errors: >>> [ERROR] >>> [ERROR] 1) No implementation for >>> >>> org.apache.maven.surefire.shade.org.apache.maven.shared.artifact.resolve.ArtifactResolver >>> was bound. >>> [ERROR] while locating org.apache.maven.plugin.surefire.SurefirePlugin >>> [ERROR] at >>> >>> ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:2.19.2-SNAPSHOT, >>> parent: sun.misc.Launcher$AppClassLoader@7852e922] >>> [ERROR] while locating org.apache.maven.plugin.Mojo annotated with >>> >>> @com.google.inject.name.Named(value=org.apache.maven.plugins:maven-surefire-plugin:2.19.2-SNAPSHOT:test) >>> [ERROR] >>> [ERROR] 1 error >>> [ERROR] role: org.apache.maven.plugin.Mojo >>> [ERROR] roleHint: >>> org.apache.maven.plugins:maven-surefire-plugin:2.19.2-SNAPSHOT:test >>> >>> On Sat, Jan 9, 2016 at 1:17 PM, Robert Scholte <[email protected]> >>> wrote: >>> >>> Hi Tibor, >>>> >>>> Regarding the artifactResolver.resolveTransitively, this has been >>>> replaced >>>> with dependencyResolver. The reason is that an artifact is basically a >>>> coordinate with a file, it is not aware of dependencies. >>>> >>>> I've traced one down for you: >>>> >>>> org.apache.maven.plugin.surefire.AbstractSurefireMojo.getForkConfiguration() >>>> contains >>>> Artifact shadeFire = getPluginArtifactMap().get( >>>> "org.apache.maven.surefire:surefire-shadefire" ); >>>> >>>> If you get the Plugin instead and use >>>> org.apache.maven.shared.dependency.TransferUtils.toDependencyCoordinate( >>>> plugin ) >>>> , then you'll be able to get all dependencies and their artifacts for >>>> the >>>> classpath. >>>> >>>> I'll leave the fixing up to you to get some more feedback on the >>>> maven-artifact-transfer components. >>>> >>>> thanks, >>>> Robert >>>> >>>> Op Thu, 07 Jan 2016 20:33:47 +0100 schreef Tibor Digana < >>>> [email protected]>: >>>> >>>> >>>> Now I removed maven-compat completely. >>>> >>>>> >>>>> <dependency> >>>>> <groupId>org.apache.maven.shared</groupId> >>>>> <artifactId>maven-artifact-transfer</artifactId> >>>>> <version>3.0-SNAPSHOT</version> >>>>> </dependency> >>>>> >>>>> It seems release version is not available. >>>>> >>>>> I should resolve compilation error after new 3.0 AtrifactResolver and >>>>> I will come back to you. >>>>> >>>>> >>>>> >>>>> >>>>> return artifactResolver.resolveTransitively( Collections.singleton( >>>>> providerArtifact ), originatingArtifact, >>>>> localRepository, >>>>> remoteRepositories, artifactMetadataSource, >>>>> filter ); >>>>> >>>>> >>>>> >>>>> >>>>> On Thu, Jan 7, 2016 at 7:39 PM, Robert Scholte <[email protected]> >>>>> wrote: >>>>> >>>>> Hi Tibor, >>>>> >>>>>> >>>>>> Bullet 4: Remove maven-compat (or give it the test-scope if it is >>>>>> required >>>>>> by the maven-plugin-testing-harness) >>>>>> >>>>>> Now I think you're at a state where Maven2 classes must be replaced >>>>>> with >>>>>> Maven3 solutions. >>>>>> >>>>>> Robert >>>>>> >>>>>> Op Thu, 07 Jan 2016 18:54:06 +0100 schreef Tibor Digana < >>>>>> [email protected]>: >>>>>> >>>>>> >>>>>> Hi Robert, >>>>>> >>>>>> >>>>>>> I did as you said and I have new issue. Any dea? >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> testSurefireReportSingleError(org.apache.maven.plugins.surefire.report.SurefireReportMojoTest) >>>>>>> Time elapsed: 0.042 sec <<< ERROR! >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.codehaus.plexus.component.repository.exception.ComponentLookupException: >>>>>>> java.util.NoSuchElementException >>>>>>> role: org.apache.maven.repository.RepositorySystem >>>>>>> roleHint: >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:253) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:241) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:235) >>>>>>> at >>>>>>> org.codehaus.plexus.PlexusTestCase.lookup(PlexusTestCase.java:207) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.apache.maven.plugin.testing.AbstractMojoTestCase.setUp(AbstractMojoTestCase.java:118) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.apache.maven.plugins.surefire.report.SurefireReportMojoTest.setUp(SurefireReportMojoTest.java:56) >>>>>>> at junit.framework.TestCase.runBare(TestCase.java:139) >>>>>>> at junit.framework.TestResult$1.protect(TestResult.java:122) >>>>>>> at junit.framework.TestResult.runProtected(TestResult.java:142) >>>>>>> at junit.framework.TestResult.run(TestResult.java:125) >>>>>>> at junit.framework.TestCase.run(TestCase.java:129) >>>>>>> at junit.framework.TestSuite.runTest(TestSuite.java:252) >>>>>>> at junit.framework.TestSuite.run(TestSuite.java:247) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) >>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>> at java.lang.reflect.Method.invoke(Method.java:497) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) >>>>>>> at >>>>>>> >>>>>>> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) >>>>>>> Caused by: java.util.NoSuchElementException >>>>>>> at >>>>>>> java.util.Collections$EmptyIterator.next(Collections.java:4189) >>>>>>> at >>>>>>> >>>>>>> >>>>>>> >>>>>>> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:249) >>>>>>> ... 25 more >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Thu, Jan 7, 2016 at 6:10 PM, Robert Scholte <[email protected] >>>>>>> > >>>>>>> wrote: >>>>>>> >>>>>>> Hi Tibor, >>>>>>> >>>>>>> >>>>>>>> so this is not how it should be done. >>>>>>>> Compat contains classes which Maven2 classes which have been >>>>>>>> replaced >>>>>>>> by >>>>>>>> Maven3 or are not used anymore. >>>>>>>> Only plugins which need to stay compatible with Maven2 should >>>>>>>> include >>>>>>>> this >>>>>>>> dependency. >>>>>>>> >>>>>>>> I'll update the page, because we've decided to change the version to >>>>>>>> 3.0-SNAPSHOT >>>>>>>> >>>>>>>> And regarding your other message: see the third bullet when using >>>>>>>> maven-plugin-testing-harness. Use version 2.1 if you want to ensure >>>>>>>> that >>>>>>>> the tests are Maven 3.0 compatible. >>>>>>>> >>>>>>>> If you need help, just let me know. By now I can recognize most of >>>>>>>> the >>>>>>>> migration issues :) >>>>>>>> >>>>>>>> thanks, >>>>>>>> Robert >>>>>>>> >>>>>>>> Op Thu, 07 Jan 2016 00:50:10 +0100 schreef Tibor Digana < >>>>>>>> [email protected]>: >>>>>>>> >>>>>>>> P=NP >>>>>>>> >>>>>>>> maven-compat made the trick >>>>>>>> >>>>>>>>> >>>>>>>>> <dependency> >>>>>>>>> <groupId>org.apache.maven</groupId> >>>>>>>>> <artifactId>maven-compat</artifactId> >>>>>>>>> </dependency> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Jan 7, 2016 at 12:09 AM, Tibor Digana-2 [via Maven] < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>> I missing this import in MOJO after migrating plugin to 3.0 >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> import org.apache.maven.shared.artifact.resolve.ArtifactResolver; >>>>>>>>>> >>>>>>>>>> The doc [1] says that maven-artifact-transfer should be used but >>>>>>>>>> it >>>>>>>>>> does >>>>>>>>>> not have yet a release version, or? >>>>>>>>>> >>>>>>>>>> <dependency> >>>>>>>>>> <groupId>org.apache.maven.shared</groupId> >>>>>>>>>> <artifactId>maven-artifact-transfer</artifactId> >>>>>>>>>> <version>0.0.1-SNAPSHOT</version> >>>>>>>>>> </dependency> >>>>>>>>>> >>>>>>>>>> [1] >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> https://cwiki.apache.org/confluence/display/MAVEN/Plugin+migration+to+Maven3+dependencies >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Cheers >>>>>>>>>> Tibor >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> ------------------------------ >>>>>>>>>> If you reply to this email, your message will be added to the >>>>>>>>>> discussion >>>>>>>>>> below: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> http://maven.40175.n5.nabble.com/migrating-Surefire-to-3-0-RC1-tp5858124.html >>>>>>>>>> To start a new topic under Maven Developers, email >>>>>>>>>> [email protected] >>>>>>>>>> To unsubscribe from Maven Developers, click here >>>>>>>>>> < >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=142166&code=dGlib3JkaWdhbmFAYXBhY2hlLm9yZ3wxNDIxNjZ8LTI4OTQ5MjEwMg== >>>>>>>>>> > >>>>>>>>>> . >>>>>>>>>> NAML >>>>>>>>>> < >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml >>>>>>>>>> > >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> -- >>>>>>>>> View this message in context: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> http://maven.40175.n5.nabble.com/migrating-Surefire-to-3-0-RC1-tp5858124p5858130.html >>>>>>>>> Sent from the Maven Developers mailing list archive at Nabble.com. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> --------------------------------------------------------------------- >>>>>>>>> >>>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> >>>>>> To unsubscribe, e-mail: [email protected] >>>>>> For additional commands, e-mail: [email protected] >>>>>> >>>>>> >>>>>> >>>>>> >>>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>>> >>>> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > > > -- > Cheers > Tibor > -- Cheers Tibor
