I'm running into the same "mavenTools: null" problem, but my code sits in a 
Maven 3.0.3 mojo:

  public class MyMojo extends AbstractMojo{

    /** @parameter default-value="${repositorySystemSession}" */
    private RepositorySystemSession repoSession;

    public void execute() throws MojoExecutionException{
      DefaultProjectBuilder builder = new DefaultProjectBuilder();
      DefaultProjectBuildingRequest req = new DefaultProjectBuildingRequest();
      req.setRepositorySession(repoSession);
      builder.build(new File("my-pom.xml"),req);

      MavenProject prj = req.getProject();
      Model model = prj.getModel();
    }
  }

It barfs with

  Caused by: java.lang.IllegalArgumentException: mavenTools: null
    at org.apache.maven.project.MavenProject.<init>(MavenProject.java:249)
    at 
org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:128)
    at 
org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:102)
    at MyMojo.execute(MyMojo.java:59)

This is because repositorySystem in DefaultProjectBuilder is null, i.e. hasn't 
been injected:

    @Requirement
    private RepositorySystem repositorySystem;

How can I get the right repositorySystem injected?

Context:
I'm essentially trying to do the M2E "Import Project" use case, but completely 
outside of Eclipse.
I want to populate a workspace using the SCM pointer given by a POM fetched 
from the group repository.

Thanks!
-Max


On 10/18/2011 04:59 AM, Barrie Treloar wrote:
On Tue, Oct 18, 2011 at 10:02 PM, deusaquilus<deusaqui...@gmail.com>  wrote:
Here's what I'm doing:

File pom = new File("pom.xml");
DefaultProjectBuildingRequest request = new DefaultProjectBuildingRequest();
DefaultProjectBuilder builder = new DefaultProjectBuilder();

String mavenHome = System.getenv("M2_HOME");
ArtifactRepository localRepository = new MavenArtifactRepository(
        "local",
        new File(mavenHome + "/repository").toURI().toURL().toString(),
        new DefaultRepositoryLayout(),
        new ArtifactRepositoryPolicy(),
        new ArtifactRepositoryPolicy());
request.setLocalRepository(localRepository);
MavenProject project = builder.build(pom, request).getProject();
Properties properties = project.getProperties();

Trouble is it's giving me errors with "mavenTools: null"

I'd be surprised if that worked.

Maven makes heavy use of dependency injection via Plexus and chances
are you haven't set up some component that is being used.

What is your actual use case.  I dont see why you would want to expose
Maven properties as a Java properties object...

---------------------------------------------------------------------
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