Résoudre par programme les dépendances de Maven en dehors d'un plugin - get RepositorySystemSession et RepositorySystem

Peut-être que cela va être une tâche complexe que je ne l'avais pensé au départ, mais peu importe, je suis en train de charger un MavenProject à partir d'un fichier et de le résoudre ses dépendances. J'ai obtenu le code pour les deux bits mais je suis en manque quelques références d'objet dont j'ai besoin; en particulier, j'ai besoin de pour obtenir des instances de RepositorySystemSession et RepositorySystem. Des conseils à donner?

Remarque: je t'ai taguée sur cette question avec maven-pluginmais ce n'est pas un plugin Maven. Je suis heureux de mandat Maven 3 (pense que j'ai déjà de toute façon..)

Voici le code que j'ai pour l'instant:

De la construction de la MavenProject:

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

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

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

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

    return ret;
}

Résoudre les dépendances:

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

Je constate que ce pourrait être une demande inhabituelle, peut-être que je devrais juste la ferraille ce que j'essaie de faire et l'envelopper comme un plugin...mais je veux juste terminer ce que j'ai commencé aujourd'hui! Merci à l'avance.

source d'informationauteur Ed .