Я новачок у 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
: встановіть пакет у локальне сховище для використання як залежність в інших проектах на місцевому рівні
Отже, відповідь на ваше запитання полягає в тому, що це залежить від того, чи хочете ви його встановити у ваше місцеве репо. Інсталяція також запустить пакет, оскільки він вище в цілі фази цілей.
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 (і класу тощо) у потрібні місця, якщо інший код залежить від цих банок.
Я зазвичай роблю а mvn clean install
; це видаляє target
каталог і відтворить усі банки в цьому місці.
Чистота допомагає з непотрібними або видаленими речами, які іноді можуть заважати.
Швидше тоді налагодження (деякий час) просто починати свіжим весь час.
З посилань на життєвий цикл , встановити буде запускати тести інтеграції проекту, пакет не буде.
Якщо вам справді не потрібно встановлювати створені артефакти, використовуйте принаймні підтвердження .
Також слід зазначити, що якщо ваш проект складається з декількох модулів, які залежать один від одного, вам слід використовувати "встановити" замість "пакет", інакше збірка не вдасться, тому що при використанні команди встановити модуль A буде упакований і розміщено в локальному сховищі, і тоді, якщо модулю B потрібен модуль A як залежність, він може отримати доступ до нього з локального сховища.
Якщо ви не використовуєте віддалене сховище (наприклад, артефактичне), використовуйте старий звичайний:
mvn clean install
Досить стара тема, але AFAIK. Якщо ви запускаєте власний сховище (наприклад, з артефактичним), щоб ділитися баночкою серед вашої команди, ви можете скористатися
mvn clean deploy
замість цього.
Таким чином, ваш сервер безперервної інтеграції може бути впевнений, що всі залежності правильно висунуті у ваше віддалене сховище. Якщо ви пропустили його, mvn не зможе знайти його у вашому локальному сховищі CI m2.
пакет - приймає скомпільований код і пакує його у своєму форматі, що розподіляється, наприклад, файл JAR або WAR. install - встановіть пакет у локальний сховище, щоб використовувати його як залежність в інших проектах на місцевому рівні
Правильний шлях , mvn package
якщо ви зробили все правильно для основної частини вашої збірки , то не повинно бути ніякої необхідності встановлювати свої пакети в локальному сховищі.
Крім того, якщо ви використовуєте Travis, ви можете «кешувати» свої залежності, оскільки це не торкнеться ваших, $HOME.m2/repository
якщо ви використовуєте пакет для власного проекту.
На практиці, якщо ви навіть намагаєтеся зробити те, mvn site
вам зазвичай потрібно зробити це mvn install
раніше. Там занадто багато помилок з будь-якими site
або численними погано підтримуваними плагінами.
Це залежить від того, що ви намагаєтеся досягти після зміни файлу Java. Поки ви не хочете перевірити процес Maven, вам ніколи нічого не потрібно робити. Eclipse / MyEclipse створить необхідне і поставить результат у відповідне місце у вашому проекті. Ви також можете запустити або розгорнути його (якщо це, наприклад, веб-проект), не потребуючи явно нічого робити з maven. Зрештою, щоб встановити свій проект у сховищі Maven, вам потрібно буде зробити встановлення Maven. У вас також можуть бути інші головні цілі, які ви хочете виконати, які MyEclipse не виконає автоматично.
Як я кажу, це залежить від того, що ви хочете зробити.