Imho IntelliJ should upgrade to use Maven 3.1.1 internally...

Stuart McCulloch wrote on 27.02.2014 18:13:

> On 28 Feb 2014, at 01:17, William Ferguson <william.fergu...@xandar.com.au>
> wrote:
> 
>> As part of the development of the android-maven-plugin we have need to add
>> in an AbstractMavenLifecycleParticipant so that we can modify the compile
>> classpath to add artefacts that are contained within a project's
>> dependencies. Igor provided a lot of the coaching on this.
>> 
>> The build works fine. Does what is intended.
>> 
>> But now, when you open a project in intelliJ13 that uses the
>> android-maven-plugin, IntelliJ declares a problem with the POM that
>> references our MavenLifecycleParticipant.
>> 
>> What I'd like help with is:
>> 1) Is this a problem with the plugin itself. Ie have we defined something
>> incorrectly.
>> 2) Is it just a problem with how IntelliJ is parsing a POM that declares
>> the plugin.
>> 
>> If it is (1), what do we need to do to fix it?
>> 
>> However, I suspect it is (2) because similar error messages seem to occur
>> when plugins designed for Maven 3.1 (and the switch to Eclipse Aether from
>> Sonatype Aether) are used in a Maven-3.0 environment. I'm thinking that
>> maybe IntelliJ is using a Maven-3.0 core. But I'm really not sure and would
>> love some clarity from those who understand what is going on a bit better.
>> And if it is (2) is there anything we or IntelliJ can do to fix it?
>> 
>> The plugin itself can be found at:
>> https://github.com/jayway/maven-android-plugin
>> 
>> A project showing the failure can be found at:
>> https://github.com/jayway/maven-android-plugin-samples/tree/master/morseflash/morseflash-app
>> 
>> And the error message is (visible via flyover in the POM editor window or
>> in idea.log):
> 
> I can recreate the same exception on the command-line using the plugin with
> Maven 3.0.5 (after I removed the 3.1.1 pre-req from the plugin’s pom.xml)
> 
> The issue is that the plugin expects Maven core to supply an implementation of
> org.eclipse.aether.impl.VersionResolver, namely DefaultVersionResolver from
> maven-aether-provider.
> 
> However in Maven 3.0.x the maven-aether-provider module only supplies an
> implementation of org.sonatype.aether.impl.VersionResolver … which is why you
> see that exception :/
> 
> Unfortunately adding a direct plugin dependency to the maven-aether-provider
> from 3.1.1 won’t help because Maven will filter out this dependency as being
> supplied from Maven core
> 
> If you want the plugin to work on both Maven 3.0.x and 3.1.x then you’ll
> either need to use an API common to both (like the shared 
> maven-dependency-tree
> component) or write two versions of the code that talks to Aether and select
> the appropriate one at runtime using reflection. But if you just want to avoid
> the exception when Intellij processes the pom.xml then you could conceivably
> provide dummy/stubbed @Component implementations of the Eclipse/Aether
> resolver, with the role set to a non-default value such as “dummy” so that
> it doesn’t interfere with the default implementation provided in Maven 3.1.1
> 
>> java.lang.RuntimeException: com.google.inject.ProvisionException:
>> Guice provision errors:
>> 
>> 1) No implementation for org.eclipse.aether.impl.VersionResolver was bound.
>>  while locating org.eclipse.aether.internal.impl.DefaultRepositorySystem
>>  at
>>  
>> ClassRealm[extension>com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.9.0-rc.1,
>> parent: sun.misc.Launcher$AppClassLoader@39172e08]
>>  at
>>  
>> ClassRealm[extension>com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.9.0-rc.1,
>> parent: sun.misc.Launcher$AppClassLoader@39172e08]
>>  while locating org.eclipse.aether.RepositorySystem
>>  while locating
>> com.jayway.maven.plugins.android.phase_prebuild.AarMavenLifecycleParticipant
>>  at
>>  
>> ClassRealm[extension>com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.9.0-rc.1,
>> parent: sun.misc.Launcher$AppClassLoader@39172e08]
>>  at
>>  
>> ClassRealm[extension>com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.9.0-rc.1,
>> parent: sun.misc.Launcher$AppClassLoader@39172e08]
>>  while locating org.apache.maven.AbstractMavenLifecycleParticipant
>> annotated with @com.google.inject.name.Named(value=AarMavenLifecycleListener)
>> 
>> 
>> We are tracking this at:
>> https://code.google.com/p/maven-android-plugin/issues/detail?id=449
>> 
>> 
>> Any help appreciated.
>> 
>> 
>> William
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to