Я новичок в Maven, у меня есть веб-проект на основе Java с maven, настроенный в MyEclipse.
Теперь, если я модифицировал любые java-файлы, тогда мне нужно сделать Run as -> Mvn install
или Mvn package
?Mvn install или Mvn package
ответ
mvn install
вариант, который чаще всего используется.
mvn package
редко используется, только если вы отлаживаете некоторые проблемы с процессом сборки maven.
См: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Обратите внимание, что mvn package
будет только создать файл JAR.
mvn install
будет делать это и установить файлы в банке (и классе и т. Д.) В соответствующих местах, если другой код зависит от этих банок.
Я обычно делаю mvn clean install
; это удаляет каталог target
и воссоздает все банки в этом месте.
Чистый помогает с ненужными или удаленными материалами, которые могут иногда мешать.
Вместо отладки (иногда) просто начинайте все время.
Я не согласен, что пакет редко используется на 2 очка. 1) Он запускается каждый раз при запуске установки. 2) Если вы делаете .war, тогда просто запускается пакет, потому что вам не нужна война в вашем местном репо. –
Ответ не объясняет, почему вы предпочитаете устанавливать его в локальный репозиторий. По моему мнению, если проекты будут настроены правильно, то реактор будет обеспечивать зависимости между модулями. Если проекты не настроены правильно, установка может просто скрыть этот факт и использовать неправильные артефакты. Если у вас есть зависимые проекты, которые по какой-то причине должны быть построены отдельно, только тогда вы захотите установить. –
из http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
: возьмите скомпилированный код и упаковать его в распределяемой формате , такие как JAR.
install
: установить пакет в локальный репозиторий, для использования в качестве зависимости в других проектах локально
Таким образом, ответ на ваш вопрос, это зависит от того, хотите ли вы его установили в ваш местный Сделки рЕПО. Установка также запускает пакет, потому что он выше в стеке цели.
Это зависит от того, чего вы пытаетесь достичь после изменения файла Java. Пока вы не захотите протестировать процесс maven, вам никогда не нужно ничего делать. Eclipse/MyEclipse построит то, что необходимо, и поместит результат в нужное место в вашем проекте. Вы также можете запустить или развернуть его (если это веб-проект, например), без необходимости явно делать что-либо с помощью maven. В конце концов, чтобы установить проект в репозиторий maven, вам нужно будет выполнить установку maven. У вас также могут быть другие цели maven, которые вы хотите выполнить, которые MyEclipse не будет делать автоматически.
Как я уже сказал, это зависит от того, что вы хотите сделать.
package - принимает скомпилированный код и упаковывает его в распространяемый формат, такой как файл JAR или WAR. установить - установить пакет в локальный репозиторий, для использования в качестве зависимости в других проектах локально
Из Lifecycle reference, установить будет запускать тесты интеграции проекта, пакета не будет.
Если вам действительно не нужно устанавливать сгенерированные артефакты, используйте, по крайней мере, , проверьте.
Если вы не с помощью удаленного хранилище (например, Artifactory), использовать обычный старый: mvn clean install
Довольно старая тема, но AFAIK, если вы используете свой собственный репозиторий (например: с Artifactory) поделиться баночку среди вашей команды (ы), вы можете использовать
mvn clean deploy
вместо этого.
Таким образом, ваш сервер непрерывной интеграции может быть уверен, что все зависимости правильно введены в ваш удаленный репозиторий. Если вы пропустили один, mvn не сможет найти его в вашем локальном хранилище m2 CI.
Я думаю, что вы говорите о mvn clean deploy, а не о mvn clean package – Mayjak
Действительно, спасибо @Estarriol, я обновил свой ответ. – user1853859
Также вы должны отметить, что если ваш проект состоит из нескольких модулей, которые зависят друг от друга, вы должны использовать «install» вместо «package», иначе ваша сборка завершится неудачно, если вы используете команду установки, модуль A будет упакован и развернут в локальный репозиторий, а затем, если модуль B нуждается в модуле A в качестве зависимости, он может получить к нему доступ из локального репозитория.
собственно путь mvn package
, если вы сделали все правильно для основной части вашей сборки, то не должно быть никакой необходимости устанавливать свои пакеты в локальном хранилище.
Кроме того, если вы используете Travis, вы можете «кэшировать» свои зависимости, потому что он не коснется вашего $HOME.m2/repository
, если вы используете пакет для своего собственного проекта.
В практическом отношении, если вы даже попытаетесь сделать mvn site
, вам обычно нужно сделать mvn install
. Слишком много ошибок с site
или многочисленными слабо поддерживаемыми плагинами.
Пожалуйста, напишите свой 'pom.xml'. Его трудно сказать, не зная, что вы проектируете конфигурацию! – Ankit
'mvn install' используется в 95% случаев,' mvn package' очень редко. – Johan
mvn install shoudl только помещает вашу банку в локальный репозиторий - я не вижу реальной причины, почему это нужно сделать с веб-проектом? – Hurda