2015-01-30 4 views
2

Я пытаюсь создать отдельный проект, который может найти зависимости от maven любого проекта. Я ссылался на образцы Aether, но я не мог найти способ определить другой проект для поиска зависимостей.Как найти зависимости от maven любого проекта?

Как показано на следующем рисунке 1, проект 1 имеет зависимости от проекта 2, а проект 2 имеет зависимости от проекта 3. Если я выбираю проект 1 в поиске зависимостей, он должен отображать все зависимости проекта 1, которые являются проектом 2.

enter image description here

Я имел в виду следующее Aether кусок кода, но я не мог понять, как установить другой проект (путем установки POM файла или каталога проекта)

RepositorySystem system = Booter.newRepositorySystem(); 

    RepositorySystemSession session = Booter.newRepositorySystemSession(system); 

    Artifact artifact = new DefaultArtifact("org.eclipse.aether:aether-impl:1.0.0.v20140518"); 

    ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest(); 
    descriptorRequest.setArtifact(artifact); 
    descriptorRequest.setRepositories(Booter.newRepositories(system, session)); 

    ArtifactDescriptorResult descriptorResult = system.readArtifactDescriptor(session, descriptorRequest); 

    for (Dependency dependency : descriptorResult.getDependencies()) 
    { 
     System.out.println(dependency); 
    } 
+2

МВН зависимость: дерево, как правило, работает для меня. – Ryan

+0

Он пытается построить проект maven, загружая зависимости, которые могут оказаться неудачными. Я просто хотел узнать список зависимостей в соответствии с структурой POM без построения. –

+2

'mvn dependency: tree' не создает проект, а просто пытается загрузить файлы POM для всех зависимостей, которые еще не существуют в локальном репозитории. Если вы загружаете «проект A» где-то, что в свою очередь зависит от «проекта B» и «проекта C» (оба из которых находятся в удаленном репозитории), Maven может определить полное дерево зависимостей для «проекта A» только после загрузки POM для «проекта B» и «проекта C». Это является причиной загрузки POM. – manish

ответ

2

Вам не нужно делать это программно. Вы можете просто вызвать dependency:tree:

mvn dependency:tree 

Я также рекомендую вам вызвать его с -Dverbose в случае, если вы действительно, действительно трудное время, выясняя, почему определенная версия иждивенцев выбирается над другой (который вы можете ожидать, что он будет использоваться вместо этого).

Или, наоборот, если вы хотите, чтобы видеть зависимости в плоской форме, вы можете также использовать dependency:list

mvn depenency:list 
0

Если вы используете eclipse с плагином maven2, тогда, когда вы открываете файл pom, он отображает пару просмотров, чтобы увидеть зависимости в соответствии с вашим требованием.

+0

На самом деле я хочу получить эти программные средства, чтобы сделать некоторую фильтрацию. Я даже пытался получить доступ к значениям, анализируя XML, но у него есть проблемы, когда версии определены у родительских попов. –

Смежные вопросы