Programáticamente resolviendo dependencias de Maven fuera de un plugin - obtenga RepositorySystemSession y RepositorySystem

al vez esta será una tarea más grande de lo que había pensado originalmente, pero de todos modos, estoy tratando de cargar unaMavenProject desde un archivo y luego resolver sus dependencias. Tengo el código para ambos bits pero me faltan algunas referencias de objetos que necesito; específicamente necesito obtener instancias deRepositorySystemSession yRepositorySystem. ¿Algun consejo

Nota He etiquetado esta pregunta con maven-plugin, pero este no es un complemento de Maven. Estoy feliz de ordenar Maven 3 (creo que ya tengo de todos modos ..)

Aquí está el código que tengo hasta ahora:

Construyendo elMavenProject:

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

Resolver dependencias:

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

Me doy cuenta de que esta podría ser una solicitud inusual, tal vez debería desechar lo que estaba tratando de hacer y envolverlo como un complemento ... ¡pero solo quiero terminar lo que comencé ahora! Gracias por adelantado

Respuestas a la pregunta(6)

Su respuesta a la pregunta