Установка Mvn или пакет Mvn

Я новичок в Maven, у меня есть веб-проект на основе Java с maven, настроенным в MyEclipse.
Теперь, если я модифицировал любые java файлы, мне нужно сделать Run as -> Mvn install или Mvn package?

Ответ 1

из http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

package: возьмите скомпилированный код и упакуйте его в свой дистрибутив формате, например JAR.

install: установите пакет в локальный репозиторий, для использования в качестве зависимость в других проектах локально

Итак, ответ на ваш вопрос: зависит от того, хотите ли вы его установить в локальное репо. Установка также запускает пакет, потому что он выше в стеке цели.

Ответ 2

mvn install - это вариант, который чаще всего используется.
mvn package используется редко, только если вы отлаживаете некоторую проблему с процессом сборки maven.

Смотрите: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Обратите внимание, что mvn package создаст только файл jar.
mvn install будет делать это и устанавливать файлы jar (и class и т.д.) в соответствующих местах, если другой код зависит от этих баннеров.

Я обычно делаю mvn clean install; это удаляет каталог target и воссоздает все банки в этом месте.
Чистое помогает с ненужным или удаленным материалом, который может иногда мешать.
Вместо этого отладка (иногда) просто начинается все время.

Ответ 3

Из Ссылка на жизненный цикл, установка будет запускать тесты интеграции проекта, пакет не будет.

Если вам действительно не нужно устанавливать сгенерированные артефакты, используйте, по крайней мере, проверку.

Ответ 4

Если вы не используете удаленный репозиторий (например, artifactory), используйте простой старый:  mvn clean install

Довольно старая тема, но AFAIK, если вы запустите свой собственный репозиторий (например, с помощью artifactory), чтобы разделить банку среди своих команд, вы можете использовать

mvn clean deploy

вместо этого.

Таким образом, ваш сервер непрерывной интеграции может быть уверен, что все зависимости правильно введены в ваш удаленный репозиторий. Если вы пропустили один, mvn не сможет найти его в вашем локальном хранилище m2 CI.

Ответ 5

Также вы должны заметить, что если ваш проект состоит из нескольких модулей, которые зависят друг от друга, вы должны использовать "install" вместо "package", иначе ваша сборка завершится неудачно, потому что, когда вы используете команду установки, модуль A будут упакованы и развернуты в локальный репозиторий, а затем, если модулю B нужен модуль A в качестве зависимости, он может получить к нему доступ из локального репозитория.

Ответ 6

package - принимает скомпилированный код и упаковывает его в свой распространяемый формат, такой как JAR или WAR файл. install - установить пакет в локальный репозиторий, для использования в качестве зависимости в других проектах локально

Ответ 7

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

Кроме того, если вы используете Travis, вы можете "кэшировать" ваши зависимости, потому что он не коснется вашего $HOME.m2/repository, если вы используете пакет для своего собственного проекта.

В практичности, если вы даже пытаетесь сделать mvn site, вам обычно нужно сделать mvn install раньше. Там слишком много ошибок с помощью site или с многочисленными слабо поддерживаемыми плагинами.

Ответ 8

Это зависит от того, чего вы пытаетесь достичь после изменения файла Java. Пока вы не захотите протестировать процесс maven, вам никогда не нужно ничего делать. Eclipse/MyEclipse построит то, что необходимо, и поместит результат в нужное место в вашем проекте. Вы также можете запустить или развернуть его (если это веб-проект, например), без необходимости явно делать что-либо с помощью maven. В конце концов, чтобы установить проект в репозиторий maven, вам нужно будет выполнить установку maven. У вас также могут быть другие цели maven, которые вы хотите выполнить, которые MyEclipse не будет делать автоматически.

Как я уже сказал, это зависит от того, что вы хотите сделать.