2015-06-08 7 views
1

Я пытаюсь понять связь между зависимостями в файле pom.xml проекта и порядком пути java classpath/build (мой вопрос касается также наследования попов).maven pom.xml порядок зависимостей vs classpath/build path order

До сих пор мне не удалось найти подробное пошаговое объяснение.

Я точно заметил, что это не «то же», что означает, иногда зависимости, которые у меня есть в моем pom.xml, не будут отображаться в пути построения в eclipse или не будут в одном порядке (после совершения mvn eclipse: eclipse - $ someflag).

Предположим, например, у меня есть следующий Parent POM:

<project> 
<modelVersion>4.0.0</modelVersion> 
<groupId>SOME_GROUP_ID</groupId> 
<artifactId>PARENT</artifactId> 
<version>SOME_VERSION</version> 
<name>${project.groupId}:${project.artifactId}</name> 
<dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>SOME_OTHER_ARTIFACT1</artifactId> 
     <version>${project.version}</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 
<modules> 
<module>CHILD</module> 
</modules> 
</project> 

и pom.xml какого-то другого проекта наследует его:

<project> 
<modelVersion>4.0.0</modelVersion> 
<parent> 
    <groupId>SOME_GROUP_ID</groupId> 
    <artifactId>PARENT</artifactId> 
    <version>SOME_VERSION</version> 
</parent> 
<artifactId>CHILD</artifactId> 
<name>${project.groupId}:${project.artifactId}</name> 
<dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>SOME_OTHER_ARTIFACT2</artifactId> 
     <version>${project.version}</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 
</project> 

Мои вопросы: Если я теперь запустить MVN eclipse: eclipse - $ someflagCHILD проект:

  1. Должно ли в пути для сборки для проекта CHILD содержать: PARENT, SOME_OTHER_ARTIFACT1, SOME_OTHER_ARTIFACT2 точно? не уверен? когда и почему один из них должен/не должен появляться в пути сборки?
  2. Должен ли в файле classpath файл для проекта CHILD содержать: PARENT, SOME_OTHER_ARTIFACT1, SOME_OTHER_ARTIFACT2 точно? не уверен? когда и почему один из них должен/не должен появляться в пути сборки?
  3. Связано ли это с флагом (i.e $ someflag), которое использовалось при запуске mvn eclipse: eclipse?
  4. Должны ли банки в библиотеке отображаться также в порядке зависимостей в инициализированном проекте? то есть PARENT, SOME_OTHER_ARTIFACT1, SOME_OTHER_ARTIFACT2 (сверху вниз) обязательно? Когда и почему порядок должен отличаться?

Спасибо

+0

КАК ДЕТЯМ ПРЕДУПРЕЖДЕНИЕ ПОСРЕДСТВОМ ПЕЧАТИ? В нем нет ['parent'section] (https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance). По крайней мере, не в вашем коде выше. Я также пропустил две другие важные части [Координаты Maven] (https://maven.apache.org/pom.html#Maven_Coordinates): '' и ' .' –

+0

@GeroldBroser, вы правы, я отредактирую это –

+0

@GeroldBroser - отредактирован, пожалуйста, дайте мне знать, если еще что-то не хватает. –

ответ

0

Re "мой вопрос также о наследовании POMS"

См Maven: The Complete Reference, Project Inheritance:

Вы можете не повторяйте себя, если ваши проекты используют наследование через родительский элемент. Когда проект указывает родителя, он наследует информацию в POM родительского проекта. Затем он может переопределить и добавить значения, указанные в этом родительском POM.

... и Multi-module vs. Inheritance:

Существует разница между унаследовать от родительского проекта и управляются с помощью многомодульного проекта. Родительский проект - это тот, который передает свои значения своим дочерним элементам.Многомодульный проект просто управляет группой других подпроектов или модулей.