Различия между зависимости и управлением в Maven

Простой:

if("string") оценивается как булев. Любое значение, которое не является false, равно true, никакого преобразования в число или что-либо в этом роде.

Сравнение "string" с логическим значением true, очевидно, даст false.

636
задан M. Justin 27 July 2018 в 05:41
поделиться

4 ответа

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

Другой чрезвычайно важный вариант использования dependencyManagement - это управление версиями артефактов, используемых в транзитивных зависимостях. Это сложно объяснить без примера. К счастью, это показано в документации.

432
ответ дан 22 November 2019 в 21:40
поделиться

Различие между этими двумя лучше всего вводится в то, что кажется необходимым и достаточным определением dependencyManagement элемента, доступного в документах веб-сайта Знатока:

dependencyManagement

"Информация о зависимостях по умолчанию для проектов, которые наследовались от этого. Зависимости в этом разделе сразу не разрешены. Вместо этого когда АНГЛИЧАНИН, полученный от этого, объявляет зависимость, описанную соответствием groupId и artifactId, версия и другие значения от этого раздела используются для той зависимости, если они не были уже указаны". [ https://maven.apache.org/ref/3.6.1/maven-model/maven.html ]

Это должно быть считано наряду с еще некоторой информацией, доступной на другой странице:

“.. минимальный набор информации для соответствия ссылке зависимостей против раздела dependencyManagement на самом деле {groupId, artifactId, введите, классификатор}. Во многих случаях эти зависимости будут относиться к артефактам банки без классификатора. Это позволяет нам стенографии набор идентификационных данных к {groupId, artifactId}, так как значение по умолчанию для поля типа является банкой, и классификатор по умолчанию является пустым. ” [ https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html ]

Таким образом, все подэлементы (объем, исключения и т.д.) элемента зависимости - кроме groupId, artifactId, вводит, классификатор, не только, версия - доступна для блокировки/значения по умолчанию в точке (и таким образом наследованный оттуда вперед) Вы указываете зависимость в dependencyElement. Если you’d указал зависимость с типом и подэлементами классификатора (см. сначала процитированную веб-страницу для проверки всех подэлементов) как не банка и не пустая соответственно, you’d потребность {groupId, artifactId, классификатор, вводит} к ссылке (твердость) что зависимость в любой точке в наследовании, происходящем из dependencyManagement элемента. Еще, {groupId, artifactId} был бы достаточен, не намереваетесь ли Вы переопределить значения по умолчанию для классификатора и типа (банка и пустой указатель соответственно). Таким образом, значение по умолчанию является хорошим ключевым словом в том определении; любой подэлемент (подэлементы) (кроме groupId, artifactId, классификатора и типа, конечно) явно присвоенное значение (значения) в точке, Вы ссылаетесь на зависимость, переопределяет значения по умолчанию в dependencyManagement элементе.

Так, любой элемент зависимости за пределами dependencyManagement, разрешено ли как ссылка на некоторый dependencyManagement элемент или поскольку автономное сразу (т.е. установлено на локальном репозитории и доступное для путей к классам).

1
ответ дан 22 November 2019 в 21:40
поделиться

Только в моих собственных словах, Ваш parent-project помогает Вам обеспечить 2 вида зависимостей:

  • неявные зависимости : все зависимости, определенные в эти <dependencies> раздел в Вашем parent-project, наследованы весь child-projects
  • явные зависимости : позволяет Вам выбирать, зависимости для применения в Вашем child-projects. Таким образом Вы используете эти <dependencyManagement> раздел, для объявления всех зависимостей, которые Вы собираетесь использовать в своем различном child-projects. Самая важная вещь состоит в том, что в этом разделе Вы определяете <version> так, чтобы Вы не объявляли это снова в Вашем child-project.

<dependencyManagement> в моей точке зрения (исправляют меня, если я неправ) просто полезно, помогая Вам централизовать версию Ваших зависимостей. Это похоже на своего рода функцию помощника.

0
ответ дан 22 November 2019 в 21:40
поделиться

Как вы и сказали, dependencyManagementиспользуется для сбора всей информации о зависимостях в общий POM файл, упрощая ссылки в дочернем POM файле.

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

Наконец, dependencyManagement можно использовать для определения стандартной версии артефакта для использования в нескольких проектах.

44
ответ дан 22 November 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: