Estoy tratando de obtener una lista de dependencias de algunos artefactos maven usando org.apache.maven.project.MavenProject.
Mi código es así
public List<Dependencies> loadProject() {
Model mavenModel = new Model();
mavenModel.setModelVersion("4.0.0");
mavenModel.setGroupId("org");
mavenModel.setArtifactId("wso2");
mavenModel.setVersion("1.0.0");
addDependency(mavenModel, "com.google.inject", "guice", "4.2.2");
addDependency(mavenModel, "ch.qos.logback", "logback-classic", "1.2.3");
MavenProject mavenProject = new MavenProject(mavenModel);
//******* Need to resolve dependencies of `mavenProject` and *******
//******* get the list of dependencies of this project. *******
return dependencies;
}
private static void addDependency(Model mavenModel, String groupId, String artifactId, String version) {
Dependency dependency = new Dependency();
dependency.setGroupId(groupId);
dependency.setArtifactId(artifactId);
dependency.setVersion(version);
mavenModel.addDependency(dependency);
}
Básicamente estoy tratando de obtener los resultados del árbol de dependencias que regresan por mvn dependency:treecomando como una lista mediante programación.
Ejemplo para los artefactos:
com.google.inject:guide:4.2.2ch.qos.logback:logback-classic:1.2.3
Lista de dependencias:
List = [
com.google.inject:guice:jar:4.2.2:compile,
javax.inject:javax.inject:jar:1:compile,
aopalliance:aopalliance:jar:1.0:compile,
com.google.guava:guava:jar:25.1-android:compile,
com.google.code.findbugs:jsr305:jar:3.0.2:compile,
org.checkerframework:checker-compat-qual:jar:2.0.0:compile,
com.google.errorprone:error_prone_annotations:jar:2.1.3:compile,
com.google.j2objc:j2objc-annotations:jar:1.1:compile,
org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:compile,
ch.qos.logback:logback-classic:jar:1.2.3:compile,
ch.qos.logback:logback-core:jar:1.2.3:compile,
org.slf4j:slf4j-api:jar:1.7.25:compile
]

org.apache.maven.project.MavenProjectMavenProjectobjetoRespuestas:
Puede usar el método
public Set<Artifact> getArtifacts()de suMavenProjectclase que devuelve un conjunto de artefactos que representan todas las dependencias que tiene el proyecto, incluidas las transitivas.NB: los contenidos están perezosamente poblados, por lo que dependiendo de qué fases se hayan ejecutado las dependencias en algunos ámbitos no se incluirán. p.ej. Si solo se ha ejecutado la fase de compilación, no se incluirán las dependencias con prueba de alcance.
Toda la información proviene de la documentación que puede encontrar aquí .
fuente