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]