Hello all,
I want to compile a Maven project from Java code. Thus, I am using the
MavenEmbedder (http://maven.apache.org/guides/mini/guide-embedding-m2.html).
Here is my code:
Configuration config = new DefaultConfiguration();
config.setUserSettingsFile(new File("..."));
config.setClassLoader(Thread.currentThread().getContextClassLoader());
ConfigurationValidationResult validationResult =
MavenEmbedder.validateConfiguration(config);
if (validationResult.isValid()) {
try {
MavenEmbedder embedder = new MavenEmbedder(config);
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
request.setBaseDirectory("...");
request.setGoals(Arrays.asList(new String[] { "clean", "install"
}));
MavenExecutionResult result = embedder.execute(request);
if (result.hasExceptions()) {
List<Exception> exceptions = result.getExceptions();
for (Exception e : exceptions) {
e.printStackTrace();
}
}
} catch (MavenEmbedderException e) {
e.printStackTrace();
}
}
When I run this code, I get this log, which show me an error:
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] MyApp
[INFO] MyApp Commons
[INFO] MyApp Client
[INFO] MyApp Server
[INFO] ------------------------------------------------------------------------
[INFO] Building MyApp
[INFO]
[INFO] Id: myapp:MyApp:pom:1.0
[INFO] task-segment: [clean, install]
[INFO] ------------------------------------------------------------------------
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to construct
build plan for: MyApp
Id: myApp:MyApp:pom:1.0
task-segment: [clean, install]. Reason: Failed to resolve plugin for mojo
binding: org.apache.maven.plugins:maven-install-plugin:2.2:install
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.getLifecycleBindings(DefaultLifecycleExecutor.java:408)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmentForProject(DefaultLifecycleExecutor.java:233)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:201)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:164)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:207)
at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:846)
at myapp.build.MavenBuilder.runMvnCommand(MavenBuilder.java:60)
at myapp.build.ProjectBuilder.go(ProjectBuilder.java:62)
at myapp.build.ProjectBuilder.doInBackground(ProjectBuilder.java:77)
at myapp.build.ProjectBuilder.doInBackground(ProjectBuilder.java:1)
at javax.swing.SwingWorker$1.call(SwingWorker.java:278)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at javax.swing.SwingWorker.run(SwingWorker.java:317)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.maven.lifecycle.plan.LifecyclePlannerException: Failed to
resolve plugin for mojo binding:
org.apache.maven.plugins:maven-install-plugin:2.2:install
at
org.apache.maven.lifecycle.plan.DefaultBuildPlanner.loadPluginDescriptor(DefaultBuildPlanner.java:350)
at
org.apache.maven.lifecycle.plan.DefaultBuildPlanner.findForkModifiers(DefaultBuildPlanner.java:197)
at
org.apache.maven.lifecycle.plan.DefaultBuildPlanner.addForkedLifecycleModifiers(DefaultBuildPlanner.java:184)
at
org.apache.maven.lifecycle.plan.DefaultBuildPlanner.constructBuildPlan(DefaultBuildPlanner.java:122)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.getLifecycleBindings(DefaultLifecycleExecutor.java:394)
... 16 more
Caused by: org.apache.maven.plugin.loader.PluginLoaderException: Failed to load
plugin. Reason: The PluginDescriptor for the plugin
org.apache.maven.plugins:maven-install-plugin was not found. Should have been
in realm:
ClassRealm[/plugins/org.apache.maven.plugins:maven-install-plugin:2...@48/thread:33,
parent: null]
at
org.apache.maven.plugin.loader.DefaultPluginLoader.loadPlugin(DefaultPluginLoader.java:111)
at
org.apache.maven.plugin.loader.DefaultPluginLoader.loadPlugin(DefaultPluginLoader.java:54)
at
org.apache.maven.lifecycle.plan.DefaultBuildPlanner.loadPluginDescriptor(DefaultBuildPlanner.java:327)
... 20 more
Caused by: org.apache.maven.plugin.PluginManagerException: The PluginDescriptor
for the plugin org.apache.maven.plugins:maven-install-plugin was not found.
Should have been in realm:
ClassRealm[/plugins/org.apache.maven.plugins:maven-install-plugin:2...@48/thread:33,
parent: null]
at
org.apache.maven.plugin.DefaultPluginManager.addPlugin(DefaultPluginManager.java:355)
at
org.apache.maven.plugin.DefaultPluginManager.verifyVersionedPlugin(DefaultPluginManager.java:224)
at
org.apache.maven.plugin.DefaultPluginManager.verifyPlugin(DefaultPluginManager.java:199)
at
org.apache.maven.plugin.loader.DefaultPluginLoader.loadPlugin(DefaultPluginLoader.java:81)
... 22 more
Some information:
- I've looked to my local repository, and the plugin
org.apache.maven.plugins:maven-install-plugin:2.2 is present.
- When I execute manually the command "mvn clean install", the project compiles
correctly.
- If I only ask in my code to do the "clean" goal (i.e.
request.setGoals(Arrays.asList(new String[] { "clean" }));), then no error
occurs and the cleaning is done correctly.
What is the problem with my code? How to solve it?
Thanks in advance.
Regards.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]