2017-01-12 6 views
-1

У меня возник вопрос о том, как механизм разрешения зависимостей Maven работает в проекте с несколькими модулями.Решения Maven для зависимостей в проекте с несколькими модулями

Обычно я использую только «mvn clean install», когда я создаю свои проекты с несколькими модулями, и мое предположение состояло в том, что если какой-либо модуль в проекте нуждается в предыдущем модуле, зависимость будет разрешена путем перехода локального репозитория и загрузки соответствующего «jar ».

Для внутренней причины проекта я должен использовать «mvn clean compile», эта команда, естественно, не создает никаких «баннеров», а «install» там не существует. Поэтому здесь я начал задаваться вопросом, как работает разрешение зависимостей для проекта с несколькими модулями, а jar 'не создается, но проект все еще может видеть изменения в предыдущих сборках. Используются ли целевые каталоги для управления зависимостями?

Или для целевого каталога 'mvn clean compile', но для 'mvn clean install' используется локальный репозиторий.

Может кто-нибудь объяснить мне, как разрешение зависимостей работает в проекте с несколькими модулями.

Thx за ответы .....

ответ

0

Я думаю, вы поймете лучше, если вы посмотрите на https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Существует жизненный цикл в процессе строительства баночки. Цель компиляции будет компилировать код и создать полную папку классов в вашем целевом каталоге. Эта цель разрешит все ваши зависимости в ваших позах и загрузит любые зависимости к вашему местному репо, а не там.

Цель установки создаст банку из каталога классов и установит ее в локальном репозитории.

Я действительно думаю, что вам нужно будет запустить цель установки, чтобы получить что-нибудь полезное.

+0

То, что я прошу, не имеет никакого жизненного цикла ....Я просто хочу знать, как Maven разрешает зависимости между модулями в проекте с несколькими модулями. – posthumecaver

0

Maven изготовлен из отдельных компонентов.

Там компонент, который имеет дело с данным модулем и, среди прочего, пытается получить его зависимости. Он ВСЕГДА получает зависимости от локального репозитория, в конце концов после загрузки таких зависимостей. Если зависимостей нет и не может быть загружено, это не сработает. В конце концов, модуль создаст свой собственный артефакт, который будет публиковаться в локальном репо.

Тогда есть компромисс, который, когда вы просите его построить несколько модулей maven, например, вызывая mvn в корне проекта, заказывает, чтобы различные модули использовали зависимости, чтобы найти лучший порядок для сборки, чтобы, если данный модуль зависит от другого, он будет строиться после того, как модуль будет зависеть. Затем он вызывает предыдущий компонент, который я описал, строя каждый модуль в порядке.

Во всех случаях заданные зависимости модулей всегда берутся из локального репо. Ожидается, что предыдущие модули, которые были построены ранее, фактически подтолкнули их артефакт к локальному репо, как правило, с помощью установки mvn, но вы можете заставить его сделать это на любом шаге благодаря правильной настройке (может быть, не очень хорошая идея).

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

Выполнение компиляции только на нескольких проектах не будет полезным.

Смежные вопросы