Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / maven dependency management / 4 сообщений из 4, страница 1 из 1
11.06.2019, 16:21
    #39825473
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven dependency management
Не могу понять в чём роль dependency management для разрешения зависимостей.
Вот пример с официального сайта: http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management
Project A:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<project>
 <modelVersion>4.0.0</modelVersion>
 <groupId>maven</groupId>
 <artifactId>A</artifactId>
 <packaging>pom</packaging>
 <name>A</name>
 <version>1.0</version>
 <dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>test</groupId>
       <artifactId>a</artifactId>
       <version>1.2</version>
     </dependency>
     <dependency>
       <groupId>test</groupId>
       <artifactId>b</artifactId>
       <version>1.0</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>test</groupId>
       <artifactId>c</artifactId>
       <version>1.0</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>test</groupId>
       <artifactId>d</artifactId>
       <version>1.2</version>
     </dependency>
   </dependencies>
 </dependencyManagement>
</project>



Project B:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<project>
  <parent>
    <artifactId>A</artifactId>
    <groupId>maven</groupId>
    <version>1.0</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>maven</groupId>
  <artifactId>B</artifactId>
  <packaging>pom</packaging>
  <name>B</name>
  <version>1.0</version>
 
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>test</groupId>
        <artifactId>d</artifactId>
        <version>1.0</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
 
  <dependencies>
    <dependency>
      <groupId>test</groupId>
      <artifactId>a</artifactId>
      <version>1.0</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>test</groupId>
      <artifactId>c</artifactId>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
</project>



http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management When maven is run on project B, version 1.0 of artifacts a, b, c, and d will be used regardless of the version specified in their pom.

a and c both are declared as dependencies of the project so version 1.0 is used due to dependency mediation. Both also have runtime scope since it is directly specified.
b is defined in B's parent's dependency management section and since dependency management takes precedence over dependency mediation for transitive dependencies, version 1.0 will be selected should it be referenced in a or c's pom. b will also have compile scope.
Finally, since d is specified in B's dependency management section, should d be a dependency (or transitive dependency) of a or c, version 1.0 will be chosen - again because dependency management takes precedence over dependency mediation and also because the current pom's declaration takes precedence over its parent's declaration.
The reference information about the dependency management tags is available from the project descriptor reference.

непонятно самое главное - разве было бы по другому если бы dependencyManagement отсуствовал в Parent или в Child ?
...
Рейтинг: 0 / 0
11.06.2019, 17:02
    #39825500
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven dependency management
questioner, на мелких проектах оно не надо.

На крупных - централизирует информацию о версии артифакта.
В модулях ты указываешь только группу и артифакт. А версия подтягивается из центра.
Это предотрващает зависимости от дробления версий-братьев. Тоесть у тебя в проекте всегда
будет одна версия артифакта во всех модулях.
...
Рейтинг: 0 / 0
11.06.2019, 18:46
    #39825561
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven dependency management
maytonquestioner, на мелких проектах оно не надо.

На крупных - централизирует информацию о версии артифакта.
В модулях ты указываешь только группу и артифакт. А версия подтягивается из центра.
Это предотрващает зависимости от дробления версий-братьев. Тоесть у тебя в проекте всегда
будет одна версия артифакта во всех модулях.

Это ясно, а по сути моего вопроса есть что-то? там про приоритеты речь
...
Рейтинг: 0 / 0
17.06.2019, 14:57
    #39827258
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
maven dependency management
up
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / maven dependency management / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]