Mismanagement of container lookup realm can cause type incompatibilities for plugins looking up components by string --------------------------------------------------------------------------------------------------------------------
Key: MNG-4925 URL: http://jira.codehaus.org/browse/MNG-4925 Project: Maven 2 & 3 Issue Type: Bug Components: Plugins and Lifecycle Affects Versions: 3.0.1 Reporter: Benjamin Bentmann Attachments: modello-regression.zip Originally reported as [MNGECLIPSE-2507|https://issues.sonatype.org/browse/MNGECLIPSE-2507] but is actually a core issue. To reproduce, copy {{plexus-build-api-0.0.6.jar}} into the {{lib}} directory of a Maven 3.0.1 distro and run {{mvn generate-sources}} (without clean!) on the attached project. This dies with {noformat} INFO] Scanning for projects... INFO] INFO] ------------------------------------------------------------------------ INFO] Building modello-regression 1.0-SNAPSHOT INFO] ------------------------------------------------------------------------ INFO] INFO] --- modello-maven-plugin:1.4.1:java (myModel) @ modello-regression --- INFO] outputDirectory: M:\downloads\modello-regression\target\generated-sources\modello INFO] Working on model: src/main/mdo/myModel.mdo INFO] Generating current version: 1.0.0 WARNING] Error contextualizing: class org.codehaus.modello.plugin.java.JavaModelloGenerator ava.lang.ClassCastException: org.sonatype.plexus.build.incremental.DefaultBuildContext cannot be cast to org.sonatype.plexus.build.incremental.BuildContext at org.codehaus.modello.plugin.AbstractModelloGenerator.contextualize(AbstractModelloGenerator.java:288) at org.codehaus.plexus.PlexusLifecycleManager.contextualize(PlexusLifecycleManager.java:247) at org.codehaus.plexus.PlexusLifecycleManager.manageLifecycle(PlexusLifecycleManager.java:223) at org.codehaus.plexus.PlexusLifecycleManager.manage(PlexusLifecycleManager.java:134) at org.sonatype.guice.plexus.binders.PlexusBeanBinder.afterInjection(PlexusBeanBinder.java:79) at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:97) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:95) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:253) at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:949) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1002) at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:945) at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:984) at org.sonatype.guice.bean.reflect.AbstractDeferredClass.get(AbstractDeferredClass.java:48) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:949) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:995) at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:945) at com.google.inject.Scopes$1$1.get(Scopes.java:59) at org.sonatype.guice.bean.locators.LazyQualifiedBean.getValue(LazyQualifiedBean.java:66) at org.sonatype.guice.plexus.locators.LazyPlexusBean.getValue(LazyPlexusBean.java:54) at java.util.AbstractMap.get(AbstractMap.java:165) at org.codehaus.modello.plugin.AbstractPluginManager.getPlugin(AbstractPluginManager.java:60) at org.codehaus.modello.core.DefaultGeneratorPluginManager.getGeneratorPlugin(DefaultGeneratorPluginManager.java:39) at org.codehaus.modello.core.DefaultModelloCore.generate(DefaultModelloCore.java:376) at org.codehaus.modello.maven.AbstractModelloGeneratorMojo.doExecute(AbstractModelloGeneratorMojo.java:266) at org.codehaus.modello.maven.AbstractModelloGeneratorMojo.execute(AbstractModelloGeneratorMojo.java:220) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:107) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:195) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:140) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:316) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:153) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:451) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:188) at org.apache.maven.cli.MavenCli.main(MavenCli.java:134) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) {noformat} Here, the {{DefaultBuildContext}} (and its contract interface {{BuildContext}}) got erroneously loaded from the core realm instead of the plugin realm. The error is due to bad management of the container's lookup realm and only manifests itself for the first mojo execution of a build. Other potentially affected plugins are those using {{plexus-sec-dispatcher}}, {{plexus-cipher}} or any other components that aren't filtered out of the plugin realm and where the component is looked up via {{PlexusContainer.lookup(String)}}, i.e. without actual type as role. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira