Saya mencoba untuk mendapatkan daftar dependensi dari beberapa artefak pakar menggunakan org.apache.maven.project.MavenProject
.
Kode saya seperti ini.
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);
}
Pada dasarnya saya mencoba untuk mendapatkan hasil pohon dependensi yang kembali dengan mvn dependency:tree
perintah sebagai daftar secara terprogram.
Contoh untuk artefak:
com.google.inject:guide:4.2.2
ch.qos.logback:logback-classic:1.2.3
Daftar ketergantungan:
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
objekJawaban:
Anda dapat menggunakan metode kelas
public Set<Artifact> getArtifacts()
AndaMavenProject
yang mengembalikan satu set artefak yang mewakili semua dependensi yang dimiliki proyek, termasuk yang transitif.NB: Konten diisi dengan malas, jadi tergantung pada fase apa yang menjalankan dependensi di beberapa lingkup tidak akan disertakan. misalnya. jika hanya fase kompilasi yang berjalan, dependensi dengan cakupan tes tidak akan dimasukkan.
Semua informasi berasal dari dokumentasi yang dapat Anda temukan di sini .
sumber