org.apache.maven.project.MavenProjectのmaven依存関係のリストを取得します


10

を使用していくつかのMavenアーティファクトの依存関係のリストを取得しようとしていorg.apache.maven.project.MavenProjectます。

私のコードはこのようなものです。

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

基本的にはmvn dependency:tree、プログラムによってリストとしてコマンドによって返される依存関係ツリーの結果を取得しようとしています。

アーチファクトの

  • com.google.inject:guide:4.2.2
  • ch.qos.logback:logback-classic:1.2.3

依存関係リスト:

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
]

同様の質問がでTunakiによって応答さstackoverflow.com/questions/39638138/...
ニキルZurunge

@NikhilZurungeしかし、ここでは、pomファイルを作成してMavenプロジェクトを作成したくありません。使用したいorg.apache.maven.project.MavenProject
Pramodya Mendis

この情報は、MavenプラグインのコンテキストでのMavenビルド中にのみ利用できます。pomファイルを単に読み取る場合、それらの情報はありません...依存関係管理(使用する場合)などの解決策はありません
khmarbaise

MavenProjectオブジェクトからの依存関係を解決するためのJavaメソッドまたはクラスがあるかどうかを知りたい
Pramodya Mendis

回答:


1

クラスのメソッドpublic Set<Artifact> getArtifacts()を使用しMavenProjectて、推移的なものも含め、プロジェクトが持つすべての依存関係を表す一連のアーティファクトを返します。

注意:コンテンツは遅延して入力されるため、一部のスコープで依存関係が実行されているフェーズによっては含まれません。例えば。コンパイルフェーズのみが実行されている場合、スコープテストの依存関係は含まれません。

すべての情報は、ここにあるドキュメントからのものです。


2
コードはMavenビルド中に(Mavenプラグインとして)実行する必要があると思いますが、OPはMaven実行の外部で実行したいと考えています。
JFマイヤー

@JFMeierはい、そうです。この使用例の解決策はないようです:/
Pramodya Mendis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.