Що робить Мейвен теоретично і на практиці? Коли варто його використовувати? [зачинено]


156

Я збираюся розпочати проект Java лише на практиці. Я читав про Мейвен, але насправді не розумію, коли він призначений для використання.

Чи можете ви дати мені кілька практичних порад? Чи дуже допомагає Мейвен? Що насправді Maven робить для мого проекту?


Хей, погляньте на це моє питання про Мейвен, Весну та Роо. Я багато використовував Maven під час роботи з Eclipse та з метою прискорити час розробки. Але є деякі питання. Я думаю, вам потрібно зрозуміти систему анотацій Java разом із Maven. Але подивіться на питання, яке я пов’язав ..
mm24

@ArtB дає хороше пояснення, що таке Мейвен. Однак, як я кажу у своєму коментарі до його відповіді, я не думаю, що вам слід це використовувати. Якщо ви хочете зібрати інструмент, використовуйте Gradle. Завантажте його, встановіть, а потім у вашому проекті створіть файл, який називається, build.gradleщо містить лише один рядок із заговором apply plugin: 'java'. Якщо припустити, що ваш вихідний код знаходиться у звичайному місці ( src/main/javaодиничне тестування в src/test/java), тепер ви можете складати, тестувати і пакувати свій код, сказавши gradle build. Легко!
Том Андерсон

2
Для використання Gradle вам потрібно навчитися Groovy , і ви , безумовно , будете траплялися проект з використанням Maven , так що по - , як і раніше стоїть навчання. Також розуміння Мейвена полегшить розуміння інших інструментів, які з’явилися після цього.
Sled

Що взагалі має Maven з анотаціями на Java?
Sled

1
+1 для Gradle, не тільки він ближче до дому для розробників Java, він може повторно використовувати Maven артефакти , і це може зробити нестандартні збірки легко stackoverflow.com/questions/1163173 / ...
Kalpesh Soni

Відповіді:


183

Що це робить

Maven є «інструментом управління складанням», то для визначення того, як ваші .javaфайли компілюються в .class, упаковані в .jar(або .warчи .ear) файли (до / після) , оброблених з допомогою інструментів, управління вашим CLASSPATH, а всіх інших родів завдань, які необхідні для побудувати свій проект. Він схожий на Apache Ant або Gradle або Makefiles в C / C ++, але він намагається бути повністю автономним в ньому , що вам не потрібно ніяких додаткових інструментів або сценарії, включивши інші спільні завдання , такі як завантаження і установки необхідних бібліотек і т.д.

Він також розроблений навколо теми "мобільність переносу", щоб у вас не виникало проблем, як один і той же код із тим же збірним сценарієм, що працює на одному комп’ютері, а не на іншому (це відома проблема, у нас є віртуальні машини Windows 98 машин, оскільки ми не змогли отримати деякі наші програми Delphi, компільовані деінде). Через це, це також найкращий спосіб працювати над проектом між людьми, які використовують різні IDE, оскільки сценарії Ant, створені за допомогою IDE, важко імпортувати до інших IDE, але всі IDE сьогодні розуміють та підтримують Maven ( IntelliJ , Eclipse та NetBeans ). Навіть якщо вам не подобається Maven, він в кінцевому підсумку є точкою відліку для всіх інших сучасних інструментів побудови.

Навіщо вам його використовувати

Про Мейвена є три речі, які дуже приємні.

  1. Maven (після того, як ви заявите, які саме ви використовуєте) автоматично завантажить усі бібліотеки, які ви використовуєте, та бібліотеки, які вони використовують для вас. Це дуже приємно, і робить роботу з великою кількістю бібліотек смішно просто. Це дозволяє уникнути "пекла залежності" . Він схожий на Ivy Apache Ant's .

  2. Він використовує " Конвенція про конфігурацію ", так що за замовчуванням вам не потрібно визначати завдання, які ви хочете виконувати. Вам не потрібно писати крок "компіляція", "тест", "пакет" або "чистий", як це потрібно зробити в Ant або Makefile. Просто покладіть файли в місця, в яких очікує їх Мейвен, і це повинно працювати з битою.

  3. У Maven також є безліч приємних плагінів, які ви можете встановити, які будуть справлятися з багатьма рутинними завданнями від генерації Java-класів із XSD-схеми за допомогою JAXB до вимірювання тестового покриття Cobertura . Просто додайте їх до своїх, pom.xmlі вони інтегруватимуться з усім, що ви хочете зробити.

Початкова крива навчання є крутою, але (майже) кожен професійний розробник Java використовує Maven або свої побажання. Вам слід користуватися Maven у кожному проекті, хоча не дивуйтеся, якщо вам знадобиться певний час, щоб звикнути до цього, і що іноді ви хочете, щоб ви могли просто робити справи вручну, оскільки навчитися чомусь новому іноді боляче. Однак, коли ви справді звикнете до Мейвена, ви побачите, що управління побудовою займає майже не час.

Як почати

Найкраще місце для початку - « Мейвен за 5 хвилин ». Це допоможе вам розпочати проект, готовий до кодування, з усіма необхідними налаштуваннями файлів і папок (так, я рекомендую використовувати архетип швидкого початку, принаймні спочатку).

Після того, як ви почнете роботу, ви хочете краще зрозуміти, яким чином інструмент призначений для використання. З цього приводу " Краще будує з Мейвен " - це найбільш ретельне місце для розуміння того, як воно працює, однак " Maven: The Complete Reference " є більш актуальним. Прочитайте перший для розуміння, а потім використовуйте другий для ознайомлення.


12
Є численні професійні розробники Java, які не використовують Maven і раді, що цього не роблять; деякі з них просто відкидають її складність і негнучкість і дотримуються Мурашника або подібного, але все більша їх кількість - це люди, які перейшли до наступників Мейвена, таких як Gradle та Buildr. Ці спадкоємці успадковують від Мейвена ідею забезпечити потужний набір кроків побудови поза коробкою, але надзвичайно простіше додавати спеціальні кроки теж. Зважаючи на їх існування, я, чесно кажучи, не думаю, що є якісь причини використовувати Maven для нових проектів.
Том Андерсон

5
Завжди виникає питання про те, наскільки детально поставити відповідь, але якщо ви пересічний розробник Java, у вашому офісі це, мабуть, або Maven, або кривдий Ant Ant (Ant + bash + perl + build комп'ютер, налаштований магічними шляхами). Якщо ви один з небагатьох щасливчиків, які працюють з розробниками A + у хороших умовах, коли свобода вибирається, є й інші варіанти (Gradle - це один). Але якщо ви працюєте в середньому місці, Maven - найкращий інструмент, який не дозволяє вашим колегам-колегам вирізати щось чітке.
Sled

4
Я не думаю, що вам потрібно бути розробником A +, щоб використовувати Gradle. Я не бачу, чому організація, яка могла б прийняти Мейвена, не могла прийняти Градле. Це правда, що Градле дозволяє стріляти собі в ногу так само, як це робить Мураш, але таким чином, що Мейвен робить досить важко (і у мене є колекція пострілів ніг моїх колег, щоб довести це); це компроміс за те, що можна робити речі, які Мевен робить практично неможливими.
Том Андерсон

4
Що стосується використання чогось на кшталт Gradle та уникнення вистрілених ніг, я пропоную тріадну класифікацію програмістів. Деякі програмісти не бояться редагувати сценарії збірки та встигати все більш-менш правильно. Ці люди корисні. Деякі програмісти бояться сценаріїв збірки і не торкаються їх. Ці люди принаймні не шкідливі; Я був у команді з 12 чоловік, де лише двоє з нас наважилися торкнутися складання, і це насправді спрацювало досить добре. Деякі програмісти не бояться сценаріїв збірки, але будуть накручувати їх, якщо торкнутися їх. Ці люди небезпечні.
Том Андерсон

1
так що це як npm для Java
KJW

9

Від документа « Сонатип» :

Відповідь на це питання залежить від вашої власної точки зору. Переважна більшість користувачів Maven збирається називати Maven "інструментом побудови": інструментом, який використовується для створення розгортаються артефактів із вихідного коду. Інженери-будівельники та керівники проектів можуть позначати Maven як щось більш комплексне: інструмент управління проектами. Яка різниця? Інструмент побудови, такий як Ant, орієнтований виключно на попередню обробку, компіляцію, упаковку, тестування та розповсюдження. Інструмент управління проектами, наприклад Maven, надає набір функцій, знайдених у інструменті збирання. Окрім надання можливостей побудови, Maven також може запускати звіти, створювати веб-сайт та полегшувати спілкування між членами робочої команди.

Я настійно рекомендую переглянути документ Sonatype і витратити деякий час на перегляд доступних плагінів, щоб зрозуміти силу Мавена.

Дуже коротко, він діє на більш високому концептуальному рівні, ніж (скажімо, мураха). За допомогою Ant ви б вказали набір файлів та ресурсів, які ви хочете створити, а потім вкажіть, як ви хочете, щоб вони були об'єднані між собою, а також вказали порядок, який має відбуватися у (clean / compile / jar). З Мейвен це все неявно. Maven розраховує знайти ваші файли в певних місцях і буде автоматично працювати з цим. Отже, створення проекту з Maven може бути набагато простішим, але вам потрібно грати за правилами Maven!


Я не спростовував цього, але, можливо, члени покоління читали вашу цитату з пропаганди Сонатипу як неявне схвалення тоталітарної філософії "управління інструментами" проекту Мевена.
Том Андерсон

1
Я не відчуваю, що ви відповіли на питання ОП, натомість ви щойно опублікували маркетинговий набір ... і цей спіл є недоцільним, оскільки "управління проектами" набагато більше, ніж те, що Мейвен робить, щоб заплутати більше, ніж допомагає, ІМХО.
Sled

2
@Brian Вибачте, якщо мій попередній коментар звучить полум’яно, але дозвольте перефразувати це: я вважаю, що ваш коментар лише добре пояснює Мейвена, якщо ви вже розумієте, що таке Мейвен, але як початковий вихідний пункт не корисний.
Sled

5

Mavenє інструментом побудови. Поряд з Antабо Gradleє Javaінструменти для будівництва.
Якщо ви новачок в Java, хоч просто будуйте, використовуючи свій IDE, оскільки Mavenмає круту криву навчання.


Підтримка IDE для Maven в NetBeans дуже хороша, завдяки чому крива навчання майже відсутня.
Капітан Жирафа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.