Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 0.0.12
-
Fix Version/s: None
-
Component/s: Maven Embedder
-
Labels:None
-
Environment:Windows XP
-
Testcase included:yes
-
Number of attachments :
Description
I have a maven project that runs javah and compiles C++ code into a DLL using the Maven native plugin. It works fine from the command line, but fails under Maven Eclipse integration.
To test this, simply create an empty java project and add this pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>foo.bar</groupId>
<artifactId>hello</artifactId>
<version>0.0</version>
<name>JNI - DLL </name>
<packaging>dll</packaging>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<extensions>true</extensions>
<configuration>
<javahOS>win32</javahOS>
</configuration>
<executions>
<execution>
<id>javah</id>
<phase>generate-sources</phase>
<goals>
<goal>javah</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
When you run it from the command line you do get a build error, but that is because we did not give it any classes to run javah on. If you run it in Eclipse it fails to even load javah. It fails doing a Plexus component lookup of JavahManager to initialize one of the fields of javah. Here is the exception trace:
[INFO] Internal error in the plugin manager executing goal 'org.codehaus.mojo:native-maven-plugin:1.0-alpha-2:javah': Unable to find the mojo 'org.codehaus.mojo:native-maven-plugin:1.0-alpha-2:javah' in the plugin 'org.codehaus.mojo:native-maven-plugin'
org.apache.maven.lifecycle.LifecycleExecutionException: Internal error in the plugin manager executing goal 'org.codehaus.mojo:native-maven-plugin:1.0-alpha-2:javah': Unable to find the mojo 'org.codehaus.mojo:native-maven-plugin:1.0-alpha-2:javah' in the plugin 'org.codehaus.mojo:native-maven-plugin'
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:526)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:342)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:165)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:227)
at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:871)
at org.maven.ide.eclipse.embedder.Maven2Executor.main(Maven2Executor.java:85)
Caused by: org.apache.maven.plugin.PluginContainerException: Unable to find the mojo 'org.codehaus.mojo:native-maven-plugin:1.0-alpha-2:javah' in the plugin 'org.codehaus.mojo:native-maven-plugin'
at org.apache.maven.plugin.DefaultPluginManager.getConfiguredMojo(DefaultPluginManager.java:823)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:647)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:519)
... 5 more
Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupException: Unable to lookup component 'org.apache.maven.plugin.Mojo', it could not be started
at org.codehaus.plexus.DefaultComponentLookupManager.lookup(DefaultComponentLookupManager.java:156)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:500)
at org.apache.maven.plugin.DefaultPluginManager.getConfiguredMojo(DefaultPluginManager.java:819)
... 7 more
Caused by: org.codehaus.plexus.component.repository.exception.ComponentLifecycleException: Error starting component
at org.codehaus.plexus.component.manager.AbstractComponentManager.startComponentLifecycle(AbstractComponentManager.java:146)
at org.codehaus.plexus.component.manager.AbstractComponentManager.createComponentInstance(AbstractComponentManager.java:132)
at org.codehaus.plexus.component.manager.PerLookupComponentManager.getComponent(PerLookupComponentManager.java:40)
at org.codehaus.plexus.DefaultComponentLookupManager.lookup(DefaultComponentLookupManager.java:147)
... 9 more
Caused by: org.codehaus.plexus.personality.plexus.lifecycle.phase.PhaseExecutionException: Error composing component
at org.codehaus.plexus.personality.plexus.lifecycle.phase.CompositionPhase.execute(CompositionPhase.java:53)
at org.codehaus.plexus.lifecycle.AbstractLifecycleHandler.start(AbstractLifecycleHandler.java:128)
at org.codehaus.plexus.component.manager.AbstractComponentManager.startComponentLifecycle(AbstractComponentManager.java:142)
... 12 more
Caused by: org.codehaus.plexus.component.composition.CompositionException: Composition failed of field manager in object of type org.codehaus.mojo.natives.plugin.NativeJavahMojo because the requirement ComponentRequirement{role='org.codehaus.mojo.natives.manager.JavahManager', roleHint='default', fieldName='manager'} was missing (lookup realm: foo.bar:hello:0.0/plugins/org.codehaus.mojo:native-maven-plugin)
at org.codehaus.plexus.component.composition.AbstractComponentComposer.findRequirement(AbstractComponentComposer.java:261)
at org.codehaus.plexus.component.composition.FieldComponentComposer.assignRequirementToField(FieldComponentComposer.java:66)
at org.codehaus.plexus.component.composition.FieldComponentComposer.assignRequirement(FieldComponentComposer.java:57)
at org.codehaus.plexus.component.composition.AbstractComponentComposer.assembleComponent(AbstractComponentComposer.java:144)
at org.codehaus.plexus.component.composition.DefaultComponentComposerManager.assembleComponent(DefaultComponentComposerManager.java:71)
at org.codehaus.plexus.personality.plexus.lifecycle.phase.CompositionPhase.execute(CompositionPhase.java:46)
... 14 more
Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupException: Component descriptor cannot be found in the component repository: org.codehaus.mojo.natives.manager.JavahManager [default] (lookup realm: ClassRealm[foo.bar:hello:0.0/plugins/org.codehaus.mojo:native-maven-plugin, parent: ClassRealm[foo.bar:hello:0.0, parent: ClassRealm[plexus.core, parent: null]]]).
at org.codehaus.plexus.DefaultComponentLookupManager.lookup(DefaultComponentLookupManager.java:139)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:500)
at org.codehaus.plexus.component.composition.AbstractComponentComposer.findRequirement(AbstractComponentComposer.java:248)
... 19 more
This also fail from the command line when using mvn 2.1
Dale, in recent 0.9.x builds you can configure m2eclipse to use external Maven installation when launching Maven build.