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
]


@NikhilZurunge 그러나 여기서는 pom 파일을 만들어 maven 프로젝트를 만들고 싶지 않습니다. 사용하고 싶습니다org.apache.maven.project.MavenProject
Pramodya Mendis

이 정보는 maven 빌드 중에 만 사용할 수 있습니다. 이는 maven 플러그인 컨텍스트에서 의미합니다. pom 파일을 읽기만하면 그러한 정보가 없습니다 .... 종속성 관리 (사용하는 경우) 등의 해결 방법이 없습니다.
khmarbaise

MavenProject객체 로부터의 의존성을 해결하는 자바 메소드 나 클래스가 있는지 알고 싶습니다
Pramodya Mendis

답변:


1

클래스 의 메소드 public Set<Artifact> getArtifacts()를 사용 MavenProject하여 전이를 포함하여 프로젝트의 모든 종속성을 나타내는 아티팩트 세트를 리턴 할 수 있습니다.

NB : 내용이 느리게 채워 지므로 어떤 범위에서 종속성을 실행 한 단계에 따라 포함되지 않습니다. 예. 컴파일 단계 만 실행 된 경우 범위 테스트와 함께 종속성이 포함되지 않습니다.

모든 정보는 여기에서 찾을 수있는 설명서에서 제공 됩니다 .


2
Maven 빌드 중 코드가 Maven 플러그인으로 실행되어야한다고 가정하지만 OP는 Maven 실행 외부에서 코드를 실행하려고합니다.
JF 마이어

@JFMeier 네, 맞습니다. 이 사용 사례에 대한 해결책이없는 것 같습니다 : /
Pramodya Mendis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.