2015-06-25 4 views
0

Я совершенно новый для Maven и у меня есть Maven несколько модулей проекта с родительским П какResolve Maven зависимости от ребенка П

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.test.cit</groupId> 
    <artifactId>cit</artifactId> 
    <version>LATEST-SNAPSHOT</version> 
    <name>Integration Test Framework</name> 
    <packaging>pom</packaging> 
    <modules> 
      <module>common</module> 
      <module>core</module> 
      <module>login</module> 
    </modules> 
</project> 

Я поставил все соответствующие внешние зависимости для детей POMS обыденных , ядро ​​и логин. Затем я преобразовал проект в проект eclipse (mvn eclipse: eclipse), и после этого затмение не может разрешить зависимости в дочернем помпе, хотя соответствующие банки присутствуют в M2_HOME.

Затем я добавил все зависимости к родительскому pom (независимо от того, какая зависимость была в дочерних помпах) от дочерних poms, а затем затмение смогло это решить.

Я смущен этим поведением. Поскольку я уже добавил внешние зависимости к дочерним помпам, почему я должен добавить снова это родительскому pom?

Никто не мог бы вам объяснить это, или я делаю что-то неправильно здесь, чтобы исправить проблему.

ответ

2

В родителю POM у вас есть возможность добавить две метки:

<dependencies></dependencies> 

и

<dependencyManagement></dependencyManagement> 

В <dependencies> теге вы должны поместить все зависимости, которые вы хотите, чтобы все вас проекты включает, например, зависимость JUnit или Log4j.

В теге <dependencyManagement> вы должны добавить все зависимости, которые необходимы вашему проекту. Это не означает, что они будут включены во все ваши проекты. Это означает, что ваши дочерние проекты могут включать их или нет. Это поможет вам управлять версиями.

Возможно, у вас есть проблемы в зависимости от ваших дочерних проектов по этой причине, когда вы добавляете все зависимости в ваш родительский проект. Это работает.

+0

Я хочу включить все зависимости в детские помпы, а не в родительский пом. Все это прекрасно работает с eclipse, но создает проблему в eclipse. – user1356042

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