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]

Reply via email to