Я новачок у 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 не виконає автоматично.
Як я кажу, це залежить від того, що ви хочете зробити.