Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-dev] 0.12.1 o.a.m.execution API Errors

Although I am not sure why this code fails (it should not), unlike
RunAs->Maven it runs maven build inside Eclipse JVM, which is not a good
idea, at least not for Tycho projects.

To mimic RunAs->Maven behaviour, you need to use Eclipse debug
infrastructure to create, setup and run a Maven launch configuration.
Inside m2e this logic is encapsulated in
org.maven.ide.eclipse.actions.ExecutePomAction but I attached trivial
sample plugin to show how to do this from thirdparty code.

--
Regards,
Igor

On 11-03-04 03:45 PM, Daniel Johnson wrote:
Hello,

We have a portion of code that we have been using to kick off a build of
a project in the eclipse workspace. Basically we are trying to mimic the
behavior of right clicking on the pom.xml file of a project and
selecting 'Run As->Maven Install'. This code worked fine for m2e 0.10.2,
but I have just tried updating to 0.12.1 and it seems to no longer work.

Here is the code:

public static BuildSummary runMaven(IFile pomFile, List<String> goals,
IProgressMonitor monitor) throws Exception {

if (monitor == null){

monitor = new NullProgressMonitor();
}

MavenPlugin.getDefault().getConsole().showConsole();
IMaven maven = MavenPlugin.getDefault().getMaven();
File file = new File( pomFile.getLocationURI() );
File projectDirectory = new File( pomFile.getProject().getLocationURI() );


MavenExecutionRequest request;
try {
request = maven.createExecutionRequest( monitor );
request.setBaseDirectory( projectDirectory );
request.setPom( file );
request.setGoals( goals );


MavenExecutionResult result = maven.execute( request, monitor );
if ( result.hasExceptions()){
// Throw Exception

}

// Build was successful

return result.getBuildSummary( result.getProject() );


} catch (CoreException e) {

// Throw Exception
}
}

Here is a sample pom:

<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><!--Copyright (c)
2010 by CiscoSystems, Inc. All rights
reserved.--><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
<modelVersion>4.0.0</modelVersion>

<groupId>com.cisco</groupId>
<artifactId>Test</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>xar</packaging>

<build>
<resources>
<resource>
<directory>${basedir}</directory>
<excludes>
<exclude>target</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>com.cisco</groupId>
<artifactId>maven-xar-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>

Here is the error message that gets thrown:
[debug] execute contextualize
[org.apache.maven.lifecycle.LifecycleExecutionException: Failed to
execute goal org.apache.maven.plugins:maven-jar-plugin:2.3.1:jar
(default-jar) on project Test-xde: Execution default-jar of goal
org.apache.maven.plugins:maven-jar-plugin:2.3.1:jar failed: A required
class was missing while executing
org.apache.maven.plugins:maven-jar-plugin:2.3.1:jar:
org/codehaus/plexus/interpolation/InterpolationException
-----------------------------------------------------
realm = plugin>org.apache.maven.plugins:maven-jar-plugin:2.3.1--1591473405
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] =
file:/Users/danijoh2/.m2/repository/org/apache/maven/plugins/maven-jar-plugin/2.3.1/maven-jar-plugin-2.3.1.jar
urls[1] =
file:/Users/danijoh2/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
urls[2] =
file:/Users/danijoh2/.m2/repository/org/apache/maven/maven-archiver/2.4.1/maven-archiver-2.4.1.jar
urls[3] =
file:/Users/danijoh2/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.jar
urls[4] =
file:/Users/danijoh2/.m2/repository/org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.jar
urls[5] =
file:/Users/danijoh2/.m2/repository/commons-lang/commons-lang/2.1/commons-lang-2.1.jar
urls[6] =
file:/Users/danijoh2/.m2/repository/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar
Number of foreign imports: 1
import: Entry[import from realm
ClassRealm[project>com.cisco:Test:1.0.0-SNAPSHOT, parent:
ClassRealm[maven.api, parent: null]]]

-----------------------------------------------------
]

I thought maybe it had to do with the custom packaging type, so I tried
changing it from 'xar' to 'jar', but then got this error:

1592452 [ModalContext] ERROR org.sonatype.guice.bean.reflect.NamedClass
- Error injecting:
org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering
java.lang.NoClassDefFoundError:
Lorg/sonatype/plexus/build/incremental/BuildContext;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
at java.lang.Class.getDeclaredFields(Class.java:1743)
at
com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:649)
at
com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:356)
at
com.google.inject.internal.ConstructorBindingImpl.getInternalDependencies(ConstructorBindingImpl.java:151)
at
com.google.inject.internal.InjectorImpl.getInternalDependencies(InjectorImpl.java:565)
at com.google.inject.internal.InjectorImpl.cleanup(InjectorImpl.java:523)
at
com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:509)
at
com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:818)
at
com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:750)
at
com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:235)
at
com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:185)
at
com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:824)
at
com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:938)
at
com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:971)
at
com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:932)
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.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1002)
at
com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:59)
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:1002)
at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:945)
at
org.sonatype.guice.bean.locators.LazyQualifiedBean.getValue(LazyQualifiedBean.java:66)
at
org.sonatype.guice.plexus.locators.LazyPlexusBean.getValue(LazyPlexusBean.java:54)
at
org.sonatype.guice.plexus.binders.PlexusRequirements$RequirementProvider.get(PlexusRequirements.java:222)
at
org.sonatype.guice.plexus.binders.ProvidedPropertyBinding.injectProperty(ProvidedPropertyBinding.java:50)
at
org.sonatype.guice.bean.inject.BeanInjector.doInjection(BeanInjector.java:101)
at
org.sonatype.guice.bean.inject.BeanInjector.injectMembers(BeanInjector.java:66)
at
com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:120)
at
com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:94)
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
org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:247)
at
org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:239)
at
org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:451)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:98)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
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: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:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at
org.maven.ide.eclipse.internal.embedder.MavenImpl.execute(MavenImpl.java:223)
at com.cisco.xmp.sdk.core.utils.MavenUtils.runMaven(MavenUtils.java:45)
at
com.cisco.xmp.sdk.fd.ui.internal.editors.common.MavenHyperlinkAdpater$1.run(MavenHyperlinkAdpater.java:85)
at
org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: java.lang.ClassNotFoundException:
org.sonatype.plexus.build.incremental.BuildContext
at
org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
... 66 more
1592454 [ModalContext] ERROR org.sonatype.guice.bean.reflect.LoadedClass
- Error injecting: org.apache.maven.plugin.resources.ResourcesMojo
com.google.inject.ProvisionException: Guice provision errors:

1) Error injecting:
org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering
at
ClassRealm[plugin>org.apache.maven.plugins:maven-resources-plugin:2.4.3,
parent: sun.misc.Launcher$AppClassLoader@32f4a24a]
at
ClassRealm[plugin>org.apache.maven.plugins:maven-resources-plugin:2.4.3,
parent: sun.misc.Launcher$AppClassLoader@32f4a24a]
while locating org.apache.maven.shared.filtering.MavenResourcesFiltering
while locating org.apache.maven.plugin.resources.ResourcesMojo

1 error
at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:958)
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
org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:247)
at
org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:239)
at
org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:451)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:98)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
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: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:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at
org.maven.ide.eclipse.internal.embedder.MavenImpl.execute(MavenImpl.java:223)
at com.cisco.xmp.sdk.core.utils.MavenUtils.runMaven(MavenUtils.java:45)
at
com.cisco.xmp.sdk.fd.ui.internal.editors.common.MavenHyperlinkAdpater$1.run(MavenHyperlinkAdpater.java:85)
at
org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: java.lang.NoClassDefFoundError:
Lorg/sonatype/plexus/build/incremental/BuildContext;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
at java.lang.Class.getDeclaredFields(Class.java:1743)
at
com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:649)
at
com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:356)
at
com.google.inject.internal.ConstructorBindingImpl.getInternalDependencies(ConstructorBindingImpl.java:151)
at
com.google.inject.internal.InjectorImpl.getInternalDependencies(InjectorImpl.java:565)
at com.google.inject.internal.InjectorImpl.cleanup(InjectorImpl.java:523)
at
com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:509)
at
com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:818)
at
com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:750)
at
com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:235)
at
com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:185)
at
com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:824)
at
com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:938)
at
com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:971)
at
com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:932)
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.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1002)
at
com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:59)
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:1002)
at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:945)
at
org.sonatype.guice.bean.locators.LazyQualifiedBean.getValue(LazyQualifiedBean.java:66)
at
org.sonatype.guice.plexus.locators.LazyPlexusBean.getValue(LazyPlexusBean.java:54)
at
org.sonatype.guice.plexus.binders.PlexusRequirements$RequirementProvider.get(PlexusRequirements.java:222)
at
org.sonatype.guice.plexus.binders.ProvidedPropertyBinding.injectProperty(ProvidedPropertyBinding.java:50)
at
org.sonatype.guice.bean.inject.BeanInjector.doInjection(BeanInjector.java:101)
at
org.sonatype.guice.bean.inject.BeanInjector.injectMembers(BeanInjector.java:66)
at
com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:120)
at
com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:94)
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)
... 26 more
Caused by: java.lang.ClassNotFoundException:
org.sonatype.plexus.build.incremental.BuildContext
at
org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
at
org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
... 66 more
[org.apache.maven.lifecycle.LifecycleExecutionException: Failed to
execute goal
org.apache.maven.plugins:maven-resources-plugin:2.4.3:resources
(default-resources) on project Test-xde: Execution default-resources of
goal org.apache.maven.plugins:maven-resources-plugin:2.4.3:resources
failed: Unable to load the mojo 'resources' in the plugin
'org.apache.maven.plugins:maven-resources-plugin:2.4.3'. A required
class is missing: Lorg/sonatype/plexus/build/incremental/BuildContext;
-----------------------------------------------------
realm = plugin>org.apache.maven.plugins:maven-resources-plugin:2.4.3
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] =
file:/Users/danijoh2/.m2/repository/org/apache/maven/plugins/maven-resources-plugin/2.4.3/maven-resources-plugin-2.4.3.jar
urls[1] =
file:/Users/danijoh2/.m2/repository/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar
urls[2] =
file:/Users/danijoh2/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar
urls[3] =
file:/Users/danijoh2/.m2/repository/commons-cli/commons-cli/1.0/commons-cli-1.0.jar
urls[4] =
file:/Users/danijoh2/.m2/repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
urls[5] =
file:/Users/danijoh2/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
urls[6] =
file:/Users/danijoh2/.m2/repository/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar
urls[7] =
file:/Users/danijoh2/.m2/repository/org/apache/maven/shared/maven-filtering/1.0-beta-4/maven-filtering-1.0-beta-4.jar
urls[8] =
file:/Users/danijoh2/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar
Number of foreign imports: 1
import: Entry[import from realm
ClassRealm[project>com.cisco.xmp.config.xde:Test-xde:1.0.0-SNAPSHOT,
parent: ClassRealm[maven.api, parent: null]]]

-----------------------------------------------------
]

Are we not using the API correctly? Or has something broken between
0.10.2 and 0.12.1?

Thanks for any help.

Regards,
Daniel



_______________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-dev

Attachment: maven-launch-test.zip
Description: Zip archive


Back to the top