Я новичок в Maven, у меня есть веб-проект на основе Java с maven, настроенным в моем MyEclipse.
Теперь, если я изменил какие-либо java-файлы, мне нужно это делать Run as -> Mvn install
или Mvn package
?
134
из http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
: взять скомпилированный код и упаковать его в распространяемый формат, например, JAR.
install
: установить пакет в локальный репозиторий для использования в качестве зависимости в других проектах локально
Итак, ответ на ваш вопрос: это зависит от того, хотите ли вы, чтобы он был установлен в вашем локальном репо. Install также запустит пакет, потому что он находится выше в стеке целевой фазы.
deploy
делает. Если вы замените его наpackage
, он не будет развернут в Nexus.mvn install
- это вариант, который используется чаще всего.mvn package
редко используется, только если вы отлаживаете какую-то проблему с процессом сборки maven.См .: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Обратите внимание, что
mvn package
будет создан только файл jar.mvn install
сделает это и установит файлы jar (и классов и т. д.) в нужные места, если от этих jar-файлов зависит другой код.Я обычно делаю
mvn clean install
; это удаляетtarget
каталог и воссоздает все банки в этом месте.Очистка помогает избавиться от ненужных или удаленных вещей, которые иногда могут мешать.
Вместо того, чтобы отлаживать (иногда), просто все время начинайте заново.
источник
Из ссылки Lifecycle , установка будет работать интеграционные тесты проекта, пакет не будет.
Если вам действительно не нужно устанавливать сгенерированные артефакты, используйте хотя бы verify .
источник
Также вы должны отметить, что если ваш проект состоит из нескольких модулей, которые зависят друг от друга, вы должны использовать «install» вместо «package», иначе ваша сборка завершится неудачно, потому что, когда вы используете команду install, модуль A будет упакован и развертывается в локальном репозитории, а затем, если модулю B требуется модуль A в качестве зависимости, он может получить к нему доступ из локального репозитория.
источник
Если вы не используете удаленный репозиторий (например, artifactory), используйте простой старый:
mvn clean install
Довольно старая тема, но AFAIK, если вы запускаете свой собственный репозиторий (например, с artifactory) для совместного использования jar среди вашей команды (групп), вы можете использовать
mvn clean deploy
вместо.
Таким образом, ваш сервер непрерывной интеграции может быть уверен, что все зависимости правильно помещены в ваш удаленный репозиторий. Если вы пропустили один, mvn не сможет найти его в вашем локальном репозитории m2 CI.
источник
package - берет скомпилированный код и упаковывает его в распространяемый формат, такой как файл JAR или WAR. install - установить пакет в локальный репозиторий для использования в качестве зависимости в других проектах локально
источник
Правильный путь ,
mvn package
если вы сделали все правильно для основной части вашей сборки , то не должно быть никакой необходимости устанавливать свои пакеты в локальном хранилище.Кроме того, если вы используете Travis, вы можете «кэшировать» свои зависимости, потому что они не коснутся ваших,
$HOME.m2/repository
если вы используете пакет для своего собственного проекта.На практике, если вы даже пытаетесь сделать это,
mvn site
вам обычно нужно сделать этоmvn install
раньше. В любом из нихsite
либо слишком много ошибок, либо множество плохо поддерживаемых плагинов.источник
Это зависит от того, чего вы пытаетесь достичь после изменения файла Java. Пока вы не захотите протестировать процесс maven, вам ничего не нужно делать. Eclipse / MyEclipse создаст то, что необходимо, и поместит результат в соответствующее место в вашем проекте. Вы также можете запустить или развернуть его (например, если это веб-проект) без необходимости явно делать что-либо с maven. В конце концов, чтобы установить свой проект в репозиторий maven, вам нужно будет выполнить установку maven. У вас также могут быть другие цели maven, которые вы хотите выполнить, что MyEclipse не будет делать автоматически.
Как я уже сказал, это зависит от того, что вы хотите делать.
источник