powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / maven dependency management
4 сообщений из 4, страница 1 из 1
maven dependency management
    #39825473
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу понять в чём роль 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
maven dependency management
    #39825500
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner, на мелких проектах оно не надо.

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

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

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


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