You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Manfred Moser <ma...@simpligility.com> on 2014/01/24 23:02:33 UTC

Problem with transitive Guava dep

In the Android Maven Plugin we use the maven-plugin-api, which has a
transitive dependency to guava 10.0.1. Another dependency (android tools
common) pulls in 13.0.1 and things are fine so far.

However when I now upgrade to the latest version of the android tools I
get 15.0. Problem is that causes my build to fail with errors related to
sisu and guice as used by the maven-plugin-api

E.g. java.lang.NoClassDefFoundError: Could not initialize class
org.eclipse.sisu.wire.ParameterKeys
	at
org.eclipse.sisu.wire.DependencyAnalyzer.<init>(DependencyAnalyzer.java:92)
	at org.eclipse.sisu.wire.ElementAnalyzer.<init>(ElementAnalyzer.java:87)
	at org.eclipse.sisu.wire.WireModule.configure(WireModule.java:74)
	at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:229)
	at com.google.inject.spi.Elements.getElements(Elements.java:103)
	at
com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:136)
	at
com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
	at com.google.inject.Guice.createInjector(Guice.java:94)
	at com.google.inject.Guice.createInjector(Guice.java:71)
	at com.google.inject.Guice.createInjector(Guice.java:61)
	at
org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:477)
	at
org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:203)
	at
org.apache.maven.plugin.testing.AbstractMojoTestCase.setupContainer(AbstractMojoTestCase.java:227)
	at
org.apache.maven.plugin.testing.AbstractMojoTestCase.getContainer(AbstractMojoTestCase.java:261)
	at
org.apache.maven.plugin.testing.AbstractMojoTestCase.setUp(AbstractMojoTestCase.java:115)
	at
com.jayway.maven.plugins.android.standalonemojos.UnpackMojoLazyTest.setUp(
...

All these test failing extend  AbstractMojoTestCase ...

Are there any plans to upgrade guava in sisu/maven? Any other ideas on
what I can do to get this stuff to behave?

manfred

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: Problem with transitive Guava dep

Posted by Stuart McCulloch <mc...@gmail.com>.
On 24 Jan 2014, at 23:49, Igor Fedorenko <ig...@ifedorenko.com> wrote:

> This problem is specific to maven-plugin-testing-harness. You can use
> any version of Guava at runtime, but test classpath is flat so you need
> to use single Guava version that is compatible with all components.
> 
> Unfortunately, I don't know how to fix the problem, at least not until
> Maven core is using OSGi ;-)
> 
> You have two options in the meantime. Use Guava 14.0.1, which is
> compatible with Sisu or use Verifier-based tests, which are immune to
> this problem.

See also: https://code.google.com/p/google-guice/issues/detail?id=760 (migrate Guice to Guava’s new CacheBuilder API)

Fixed in Guice master: https://code.google.com/p/google-guice/source/detail?r=8743a0bb0fb49f30117c846880a7df2e7b36657e

and available in sisu-guice 3.1.7 and above (no change needed in Sisu itself).

> --
> Regards,
> Igor
> 
> On 1/24/2014, 17:02, Manfred Moser wrote:
>> In the Android Maven Plugin we use the maven-plugin-api, which has a
>> transitive dependency to guava 10.0.1. Another dependency (android tools
>> common) pulls in 13.0.1 and things are fine so far.
>> 
>> However when I now upgrade to the latest version of the android tools I
>> get 15.0. Problem is that causes my build to fail with errors related to
>> sisu and guice as used by the maven-plugin-api
>> 
>> E.g. java.lang.NoClassDefFoundError: Could not initialize class
>> org.eclipse.sisu.wire.ParameterKeys
>> 	at
>> org.eclipse.sisu.wire.DependencyAnalyzer.<init>(DependencyAnalyzer.java:92)
>> 	at org.eclipse.sisu.wire.ElementAnalyzer.<init>(ElementAnalyzer.java:87)
>> 	at org.eclipse.sisu.wire.WireModule.configure(WireModule.java:74)
>> 	at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:229)
>> 	at com.google.inject.spi.Elements.getElements(Elements.java:103)
>> 	at
>> com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:136)
>> 	at
>> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
>> 	at com.google.inject.Guice.createInjector(Guice.java:94)
>> 	at com.google.inject.Guice.createInjector(Guice.java:71)
>> 	at com.google.inject.Guice.createInjector(Guice.java:61)
>> 	at
>> org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:477)
>> 	at
>> org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:203)
>> 	at
>> org.apache.maven.plugin.testing.AbstractMojoTestCase.setupContainer(AbstractMojoTestCase.java:227)
>> 	at
>> org.apache.maven.plugin.testing.AbstractMojoTestCase.getContainer(AbstractMojoTestCase.java:261)
>> 	at
>> org.apache.maven.plugin.testing.AbstractMojoTestCase.setUp(AbstractMojoTestCase.java:115)
>> 	at
>> com.jayway.maven.plugins.android.standalonemojos.UnpackMojoLazyTest.setUp(
>> ...
>> 
>> All these test failing extend  AbstractMojoTestCase ...
>> 
>> Are there any plans to upgrade guava in sisu/maven? Any other ideas on
>> what I can do to get this stuff to behave?
>> 
>> manfred
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: Problem with transitive Guava dep

Posted by Manfred Moser <ma...@simpligility.com>.
> This problem is specific to maven-plugin-testing-harness. You can use
> any version of Guava at runtime, but test classpath is flat so you need
> to use single Guava version that is compatible with all components.
>
> Unfortunately, I don't know how to fix the problem, at least not until
> Maven core is using OSGi ;-)
>
> You have two options in the meantime. Use Guava 14.0.1, which is
> compatible with Sisu or use Verifier-based tests, which are immune to
> this problem.

I will check out if Guava 14.0.1 works although I cant fully test this
since I am not utilizing the full dependencies yet. So it might be ending
up in runtime problems once I start integrating those dependencies more...

So do you have some good examples for verifier based tests of a maven
plugin. E.g. we pull in a pom as a test resource and e.g. an
AndroidManifest file, do some stuff and then verify the results. Can I do
that easily with verifier based tests? If so maybe I should just refactor
those tests although thats going to be quite a bit of work.. but better
going forward.

manfred
>
> --
> Regards,
> Igor
>
> On 1/24/2014, 17:02, Manfred Moser wrote:
>> In the Android Maven Plugin we use the maven-plugin-api, which has a
>> transitive dependency to guava 10.0.1. Another dependency (android tools
>> common) pulls in 13.0.1 and things are fine so far.
>>
>> However when I now upgrade to the latest version of the android tools I
>> get 15.0. Problem is that causes my build to fail with errors related to
>> sisu and guice as used by the maven-plugin-api
>>
>> E.g. java.lang.NoClassDefFoundError: Could not initialize class
>> org.eclipse.sisu.wire.ParameterKeys
>> 	at
>> org.eclipse.sisu.wire.DependencyAnalyzer.<init>(DependencyAnalyzer.java:92)
>> 	at
>> org.eclipse.sisu.wire.ElementAnalyzer.<init>(ElementAnalyzer.java:87)
>> 	at org.eclipse.sisu.wire.WireModule.configure(WireModule.java:74)
>> 	at
>> com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:229)
>> 	at com.google.inject.spi.Elements.getElements(Elements.java:103)
>> 	at
>> com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:136)
>> 	at
>> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
>> 	at com.google.inject.Guice.createInjector(Guice.java:94)
>> 	at com.google.inject.Guice.createInjector(Guice.java:71)
>> 	at com.google.inject.Guice.createInjector(Guice.java:61)
>> 	at
>> org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:477)
>> 	at
>> org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:203)
>> 	at
>> org.apache.maven.plugin.testing.AbstractMojoTestCase.setupContainer(AbstractMojoTestCase.java:227)
>> 	at
>> org.apache.maven.plugin.testing.AbstractMojoTestCase.getContainer(AbstractMojoTestCase.java:261)
>> 	at
>> org.apache.maven.plugin.testing.AbstractMojoTestCase.setUp(AbstractMojoTestCase.java:115)
>> 	at
>> com.jayway.maven.plugins.android.standalonemojos.UnpackMojoLazyTest.setUp(
>> ...
>>
>> All these test failing extend  AbstractMojoTestCase ...
>>
>> Are there any plans to upgrade guava in sisu/maven? Any other ideas on
>> what I can do to get this stuff to behave?
>>
>> manfred
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: Problem with transitive Guava dep

Posted by Igor Fedorenko <ig...@ifedorenko.com>.
This problem is specific to maven-plugin-testing-harness. You can use
any version of Guava at runtime, but test classpath is flat so you need
to use single Guava version that is compatible with all components.

Unfortunately, I don't know how to fix the problem, at least not until
Maven core is using OSGi ;-)

You have two options in the meantime. Use Guava 14.0.1, which is
compatible with Sisu or use Verifier-based tests, which are immune to
this problem.

--
Regards,
Igor

On 1/24/2014, 17:02, Manfred Moser wrote:
> In the Android Maven Plugin we use the maven-plugin-api, which has a
> transitive dependency to guava 10.0.1. Another dependency (android tools
> common) pulls in 13.0.1 and things are fine so far.
>
> However when I now upgrade to the latest version of the android tools I
> get 15.0. Problem is that causes my build to fail with errors related to
> sisu and guice as used by the maven-plugin-api
>
> E.g. java.lang.NoClassDefFoundError: Could not initialize class
> org.eclipse.sisu.wire.ParameterKeys
> 	at
> org.eclipse.sisu.wire.DependencyAnalyzer.<init>(DependencyAnalyzer.java:92)
> 	at org.eclipse.sisu.wire.ElementAnalyzer.<init>(ElementAnalyzer.java:87)
> 	at org.eclipse.sisu.wire.WireModule.configure(WireModule.java:74)
> 	at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:229)
> 	at com.google.inject.spi.Elements.getElements(Elements.java:103)
> 	at
> com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:136)
> 	at
> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
> 	at com.google.inject.Guice.createInjector(Guice.java:94)
> 	at com.google.inject.Guice.createInjector(Guice.java:71)
> 	at com.google.inject.Guice.createInjector(Guice.java:61)
> 	at
> org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:477)
> 	at
> org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:203)
> 	at
> org.apache.maven.plugin.testing.AbstractMojoTestCase.setupContainer(AbstractMojoTestCase.java:227)
> 	at
> org.apache.maven.plugin.testing.AbstractMojoTestCase.getContainer(AbstractMojoTestCase.java:261)
> 	at
> org.apache.maven.plugin.testing.AbstractMojoTestCase.setUp(AbstractMojoTestCase.java:115)
> 	at
> com.jayway.maven.plugins.android.standalonemojos.UnpackMojoLazyTest.setUp(
> ...
>
> All these test failing extend  AbstractMojoTestCase ...
>
> Are there any plans to upgrade guava in sisu/maven? Any other ideas on
> what I can do to get this stuff to behave?
>
> manfred
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org