Я новичок в Maven, у меня есть веб-проект на основе Java с maven, настроенным в моем MyEclipse.
Теперь, если я изменил какие-либо java-файлы, мне нужно это делать Run as -> Mvn install
или Mvn package
?
Я новичок в Maven, у меня есть веб-проект на основе Java с maven, настроенным в моем MyEclipse.
Теперь, если я изменил какие-либо java-файлы, мне нужно это делать Run as -> Mvn install
или Mvn package
?
Ответы:
из 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 не будет делать автоматически.
Как я уже сказал, это зависит от того, что вы хотите делать.