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:tree
comando como una lista mediante programación.
Ejemplo para los artefactos:
com.google.inject:guide:4.2.2
ch.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.MavenProject
MavenProject
objetoRespuestas:
Puede usar el método
public Set<Artifact> getArtifacts()
de suMavenProject
clase 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