(Первоначально я задал этот вопрос очень подробно здесь . Я взял его здесь как maven-users)
список рассылки замолчал по этому вопросу.) (Не просто еще один вопрос для новичков)
Мои справочные материалы: http://maven.apache.org/guides /introduction/introduction-to-dependency-mechanism.html#Dependency_Management; пожалуйста, дайте мне знать в этом обсуждении, если оно устарело или неверно.
В этом документе есть раздел, который начинается с wi th "Второе, и очень важное ...". Далее я буду ссылаться на проекты этого раздела A
и B
и буду отрывками из них.
В этом разделе вы увидите, что проект A
имеет раздел
, который, помимо прочего, определяет артефакт, c
, как имеющий область видимости compile
:
test
c
1.0
compile
Затем вы увидите pom.xml
для проекта B
, который (a) наследуется от проекта A
(таким образом наследуя его раздел dependencyManagement
) и (b) устанавливает зависимость от артефакта c
, без необходимости указывать его версию
. Вы также заметите, что зависимость от артефакта c
переопределяет область действия c
как среда выполнения
, а не компиляция
:
test
c
runtime
Опять же , вы заметите, что нет элемента
, но есть элемент
.
Моя интерпретация заключается в том, что, когда все будет сказано и сделано, B
будет зависеть от версии 1.0
артефакта c
в среде выполнения
], а не компилировать
область.
Это правильно? Моя ошибка maven-ear-plugin
основана на том факте, что это ожидаемое поведение. Это не то, что происходит, когда maven-ear-plugin
создает файл .ear
.
Затем, если это верно, я также ожидал бы, что если бы артефакт c
имел какие-либо транзитивные зависимости времени выполнения
, они были бы доступны в B
] runtime
путь к классам (как определено в несколько сбивающей с толку таблице в http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope ).
Правильно?