Programowo rozwiązujące zależności Maven poza wtyczką - pobierz RepositorySystemSession i RepositorySystem

Może to będzie większe zadanie, niż początkowo myślałem, ale mimo to próbuję załadowaćMavenProject z pliku, a następnie rozwiązać jego zależności. Mam kod dla obu bitów, ale brakuje mi niektórych odniesień do obiektów, których potrzebuję; konkretnie muszę uzyskać wystąpieniaRepositorySystemSession iRepositorySystem. Jakieś wskazówki

Uwaga Oznacziłem to pytanie tagiem maven-plugin, ale to nie jest wtyczka Maven. Z przyjemnością zlecam Maven 3 (myślę, że i tak już mam ...)

Oto kod, który mam do tej pory:

KonstruowanieMavenProject:

public static MavenProject loadProject(File pomFile) throws Exception
{
    MavenProject ret = null;
    MavenXpp3Reader mavenReader = new MavenXpp3Reader();

    if (pomFile != null && pomFile.exists())
    {
        FileReader reader = null;

        try
            {
            rea,der = new FileReader(pomFile);
            Model model = mavenReader.read(reader);
            model.setPomFile(pomFile);

            ret = new MavenProject(model);
        }
        finally
        {
            // Close reader
        }
    }

    return ret;
}

Rozwiązywanie zależności:

public static List<Dependency> getArtifactsDependencies(MavenProject project, String dependencyType, String scope) throws Exception
{    
    DefaultArtifact pomArtifact = new DefaultArtifact(project.getId());

    RepositorySystemSession repoSession = null; // TODO
    RepositorySystem repoSystem = null; // TODO

    List<RemoteRepository> remoteRepos = project.getRemoteProjectRepositories();
    List<Dependency> ret = new ArrayList<Dependency>();

    Dependency dependency = new Dependency(pomArtifact, scope);

    CollectRequest collectRequest = new CollectRequest();
    collectRequest.setRoot(dependency);
    collectRequest.setRepositories(remoteRepos);

    DependencyNode node = repoSystem.collectDependencies(repoSession, collectRequest).getRoot();
    DependencyRequest projectDependencyRequest = new DependencyRequest(node, null);

    repoSystem.resolveDependencies(repoSession, projectDependencyRequest);

    PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
    node.accept(nlg);

    ret.addAll(nlg.getDependencies(true));

    return ret;
}

Zdaję sobie sprawę, że może to być nietypowa prośba, może powinienem po prostu skreślić to, co próbowałem zrobić i zapakować jako wtyczkę ... ale po prostu chcę dokończyć to, co zacząłem teraz! Z góry dziękuję

questionAnswers(6)

yourAnswerToTheQuestion