Відмінності між Мурахом і Мейвен [закрито]


180

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


4
Оскільки у відповідях переважають захисники Мейвена, я хотів би трохи збалансувати це. Дивіться цю відповідь, наприклад, stackoverflow.com/questions/1306579/…
Петро Гладких

4
Хоча це не відповідає безпосередньо на питання порівняння Ant з Maven, моїм висновком слід було б ознайомитись із використанням Gradle, що може надати вам доступ одночасно до Ant та Maven. gradle.org

Відповіді:


218

У програмі Maven: The Definitive Guide я писав про відмінності між Мейвен та Мурашним у вступі назви розділу "Різниці між Мурахом та Мейвен" . Ось відповідь, що є поєднанням інформації у цьому вступі з деякими додатковими примітками.

Просте порівняння

Я показую вам це лише для того, щоб проілюструвати думку про те, що, на самому базовому рівні, Мейвен має вбудовані конвенції. Ось простий файл збірки мурашок:

<project name="my-project" default="dist" basedir=".">
    <description>
        simple example build file
    </description>   
    <!-- set global properties for this build -->   
    <property name="src" location="src/main/java"/>
    <property name="build" location="target/classes"/>
    <property name="dist"  location="target"/>

    <target name="init">
      <!-- Create the time stamp -->
      <tstamp/>
      <!-- Create the build directory structure used by compile -->
      <mkdir dir="${build}"/>   
    </target>

    <target name="compile" depends="init"
        description="compile the source " >
      <!-- Compile the java code from ${src} into ${build} -->
      <javac srcdir="${src}" destdir="${build}"/>  
    </target>

    <target name="dist" depends="compile"
        description="generate the distribution" >
      <!-- Create the distribution directory -->
      <mkdir dir="${dist}/lib"/>

      <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file
-->
      <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
   </target>

   <target name="clean"
        description="clean up" >
     <!-- Delete the ${build} and ${dist} directory trees -->
     <delete dir="${build}"/>
     <delete dir="${dist}"/>
   </target>
 </project>

У цьому простому мурашному прикладі ви можете побачити, як ви мусите точно сказати Мураві, що робити. Існує мета компіляції, яка включає завдання javac, яке компілює джерело в каталозі src / main / java до каталогу target / класів. Ви мусите точно сказати Ant, де знаходиться ваше джерело, де ви хочете, щоб отриманий байт-код зберігався, і як упакувати це все у файл JAR. Хоча існують деякі останні події, які допомагають зробити Ant менш процедурним, досвід розробника з Ant полягає в кодуванні процедурної мови, написаної в XML.

Порівняйте попередній приклад мурашки з прикладом Мейвена. У Maven, щоб створити файл JAR з якогось джерела Java, все, що вам потрібно зробити, це створити простий pom.xml, помістити свій вихідний код у $ {basedir} / src / main / java, а потім запустити mvn install з командного рядка . Приклад Maven pom.xml, який досягає однакових результатів.

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.sonatype.mavenbook</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0</version>
</project>

Це все, що вам потрібно у вашому pom.xml. Запуск mvn install з командного рядка буде обробляти ресурси, компілювати джерело, виконувати тести одиниць, створювати JAR та встановлювати JAR у локальному сховищі для повторного використання в інших проектах. Без змін ви можете запустити mvn-сайт, а потім знайти файл index.html у target / site, який містить посилання на JavaDoc та кілька звітів про ваш вихідний код.

Справді, це найпростіший можливий приклад проекту. Проект, який містить лише вихідний код і який виробляє JAR. Проект, який дотримується конвенцій Мейвена і не вимагає ніяких залежностей або налаштування. Якщо ми хотіли почати налаштовувати поведінку, наш pom.xml збирається збільшуватись, і в найбільших проектах ви можете побачити колекції дуже складних Maven POM, які містять велику кількість налаштувань плагінів та декларацій залежності. Але навіть коли файли POM вашого проекту стають більш істотними, вони містять зовсім інший вид інформації з файлу збірки проекту аналогічного розміру за допомогою Ant. Maven POM містять декларації: "Це проект JAR" та "Вихідний код знаходиться у src / main / java". Файли збірки мурашок містять чіткі вказівки: "Це проект", "src/main/java"," Запустити javacпроти цього каталогу "," Покласти результати в target/classses"," Створити JAR з .... "і т. Д. Там, де мурашник мав бути явним щодо цього процесу, в Maven було щось" вбудоване ". що просто знав, де знаходиться вихідний код і як його слід обробляти.

Порівняння на високому рівні

Відмінності між Мурахом та Мейвен у цьому прикладі? Мураха ...

  • не має офіційних умов, як загальна структура каталогів проектів, ви мусите точно сказати Ant, де знайти джерело і де поставити вихід. З часом з'явилися неформальні конвенції, але вони не були кодифіковані у продукт.
  • це процедурна процедура, ви мусите сказати Енту точно, що робити і коли це робити. Вам потрібно було сказати його складати, потім копіювати, а потім стискати.
  • не має життєвого циклу, вам довелося визначити цілі та залежність від цілей. До кожної цілі потрібно було вкласти вручну послідовність завдань.

Де Мейвен ...

  • має конвенції, він уже знав, де знаходиться ваш вихідний код, оскільки ви дотримувались конвенції. Він поставив байт-код у target / класах, і він створив файл JAR у target.
  • є декларативним. Все, що вам потрібно було зробити, це створити файл pom.xml і помістити джерело в каталог за замовчуванням. Мейвен подбав про відпочинок.
  • має життєвий цикл, до якого ви посилалися під час виконання mvn install. Ця команда наказала Мейвіну виконати ряд послідовних кроків, поки не досяг життєвого циклу. Як побічний ефект цієї поїздки по життєвому циклу, Мейвен виконав ряд цілей плагінів за замовчуванням, які робили такі речі, як компіляція та створення JAR.

Що про Плющ?

Правильно, тож хтось на кшталт Стіва Лофрана збирається прочитати це порівняння і зателефонувати. Він розповість про те, як відповідь повністю ігнорує щось, що називається Айві, і про те, що Мураха може повторно використовувати логіку побудови в останніх випусках Ant. Це правда. Якщо у вас є маса розумних людей, які використовують Ant + antlibs + Ivy, ви закінчите добре розроблену конструкцію, яка працює. Хоча я дуже впевнений, що Мейвен має сенс, я б із задоволенням використовував Ant + Ivy з командою проекту, яка мала дуже гострого інженера з побудови. Зважаючи на це, я думаю, що ви в кінцевому підсумку пропустите цілий ряд цінних плагінів, таких як плагін Jetty, і що ви в кінцевому підсумку зробите цілу купу роботи, яку вам не потрібно було робити з часом.

Більш важливий, ніж Мейвен проти Ант

  1. Це ви використовуєте диспетчер сховищ для відстеження артефактів програмного забезпечення. Я б запропонував завантажити Nexus . Ви можете використовувати Nexus для віддалених сховищ проксі-сервісів і для надання місця своїй команді для розгортання внутрішніх артефактів.
  2. У вас є відповідна модуляція програмних компонентів. Один великий монолітний компонент рідко масштабується з часом. По мірі розвитку вашого проекту вам потрібно мати концепцію модулів та підмодулів. Мейвен дуже добре піддається цьому підходу.
  3. Ви приймаєте деякі умови для створення. Навіть якщо ви використовуєте Ant, ви повинні прагнути прийняти певну форму конвенції, яка відповідає іншим проектам. Коли проект використовує Maven, це означає, що кожен, хто знайомий з Maven, може забрати збірку і почати працювати з нею, не поспішаючи з конфігурацією, щоб зрозуміти, як змусити цю річ скласти.

1
Посилання знову розриваються.
Громовержець

1
Я використовую роботи Nebeans і Ant за замовчуванням без будь-яких налаштувань (Netbeans Convention?). В даний час намагаються Maven і знаходять його більш тривалим під час перших версій і постійно користуються Інтернетом. Побудувати в автономному режимі можливо неможливо. Це незручно.
Зон

113

Maven - це Рамка, Мураха - це інструментарій

Maven - це попередньо побудований дорожній автомобіль, тоді як Ant - це набір автомобільних деталей. З Ant ви повинні побудувати свій власний автомобіль, але принаймні, якщо вам потрібно зробити позашляховик, ви зможете побудувати правильний тип автомобіля.

Інакше кажучи, Maven - це рамка, а Ant - це інструментарій. Якщо ви задоволені роботою в рамках, то Мейвен буде добре. Проблема для мене полягала в тому, що я постійно натикався на межі рамки, і це не дозволило мені вийти.

XML Verbosity

tobrien - це хлопець, який багато що знає про Мейвена, і я думаю, що він забезпечив дуже гарне, чесне порівняння двох продуктів. Він порівнював простий Maven pom.xml з простим файлом збірки мурашок і згадував, як проекти Maven можуть стати складнішими. Я думаю, що варто поглянути на порівняння пари файлів, які ви, швидше за все, побачите в простому реальному проекті. Файли, представлені нижче, представляють один модуль у складі багатомодуля.

По-перше, файл Maven:

<project 
    xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-4_0_0.xsd">

    <parent>
        <groupId>com.mycompany</groupId>
        <artifactId>app-parent</artifactId>
        <version>1.0</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>persist</artifactId>
    <name>Persistence Layer</name>

    <dependencies>

        <dependency>
            <groupId>com.mycompany</groupId>
            <artifactId>common</artifactId>
            <scope>compile</scope>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>com.mycompany</groupId>
            <artifactId>domain</artifactId>
            <scope>provided</scope>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>${hibernate.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>${commons-lang.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>${spring.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.dbunit</groupId>
            <artifactId>dbunit</artifactId>
            <version>2.2.3</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng.version}</version>
            <scope>test</scope>
            <classifier>jdk15</classifier>
        </dependency>

        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>${commons-dbcp.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc</artifactId>
            <version>${oracle-jdbc.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>${easymock.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

</project>

І еквівалентний файл Ant:

<project name="persist" >

    <import file="../build/common-build.xml" />


    <path id="compile.classpath.main">
        <pathelement location="${common.jar}" />
        <pathelement location="${domain.jar}" />
        <pathelement location="${hibernate.jar}" />
        <pathelement location="${commons-lang.jar}" />
        <pathelement location="${spring.jar}" />
    </path>


    <path id="compile.classpath.test">
        <pathelement location="${classes.dir.main}" />
        <pathelement location="${testng.jar}" />
        <pathelement location="${dbunit.jar}" />
        <pathelement location="${easymock.jar}" />
        <pathelement location="${commons-dbcp.jar}" />
        <pathelement location="${oracle-jdbc.jar}" />
        <path refid="compile.classpath.main" />
    </path>


    <path id="runtime.classpath.test">
        <pathelement location="${classes.dir.test}" />
        <path refid="compile.classpath.test" />
    </path>


</project>

Тобріен використав свій приклад, щоб показати, що Maven має вбудовані конвенції, але це не обов'язково означає, що ви закінчуєте писати менше XML. Я вважав, що навпаки є правдою. Pom.xml в 3 рази довший, ніж build.xml, і це не відхиляється від умов. Насправді, мій приклад Maven показаний без зайвих 54 рядків, необхідних для налаштування плагінів. Цей pom.xml призначений для простого проекту. XML дійсно починає значно зростати, коли ви починаєте додавати додаткові вимоги, що не є звичайним для багатьох проектів.

Але ти мусиш сказати Мураві, що робити

Мій приклад Мураха вище не звичайно. Нам залишається визначити цілі, які використовуються для очищення, компіляції, тестування тощо. Вони визначаються у загальному файлі збірки, який імпортується всіма модулями в мультимодульному проекті. Що призводить мене до того, що всі ці речі повинні бути чітко написані в Ant, тоді як це декларативне в Maven.

Це правда, це заощадило б мені час, якби мені не довелося чітко писати ці мурашині цілі. Але скільки часу? Поширений файл збірки, який я зараз використовую, - це той, який я написав 5 років тому, з тих пір лише з невеликими уточненнями. Після 2-річного експерименту з Мейвен я витягнув з шафи старий файл збирання мурашок, запилив його та повернув на роботу. Для мене вартість того, щоб явно сказати Мураві, що робити, склала менше ніж тиждень протягом 5 років.

Складність

Наступна основна відмінність, яку я хотів би зазначити, полягає у складності та реальному ефекті. Maven був побудований з метою зменшити завантаженість розробників, на які покладено завдання створення та управління процесами збирання. Для цього це має бути складним. На жаль, складність, як правило, заперечує поставлену мету.

Якщо порівнювати з Ant, хлопець з будівництва на проект Maven витратить більше часу:

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

У контрасті:

  • Документація щодо мурашок є стислою, вичерпною і все в одному місці
  • Мураха проста. Новому розробнику, який намагається навчитися Ant, потрібно лише зрозуміти кілька простих понять (цілі, завдання, залежності, властивості), щоб мати можливість з'ясувати решту того, що їм потрібно знати.
  • Мураш надійний. За останні кілька років не було дуже багато випусків Ant, тому що це вже працює.
  • Набори мурашок повторюються, оскільки вони, як правило, створюються без зовнішніх залежностей, таких як онлайн-сховища, експериментальні сторонні додатки тощо.
  • Мураха всеосяжна. Оскільки це панель інструментів, ви можете комбінувати інструменти для виконання практично будь-якого завдання, яке вам потрібно. Якщо вам коли-небудь потрібно написати власне завдання, це зробити дуже просто.

Ознайомлення

Ще одна відмінність полягає у знайомстві. Новим розробникам завжди потрібен час, щоб досягти швидкості. Ознайомлення з існуючими продуктами допомагає в цьому плані, і прихильники Maven справедливо стверджують, що це користь Maven. Звичайно, гнучкість Мурахи означає, що ви можете створювати будь-які звичаї. Таким чином, умова, яку я використовую, полягає в тому, щоб помістити свої вихідні файли в ім'я каталогу src / main / java. Мої складені класи переходять до каталогу з назвою target / класів. Звучить знайомо, чи не так.

Мені подобається структура каталогів, яку використовує Maven. Я думаю, що це має сенс. Також їх життєвий цикл будувати. Тому я використовую ті самі умовності у своїх побудовах Ant. Не тільки тому, що це має сенс, а тому, що він буде знайомий кожному, хто раніше використовував Maven.


7
Мені дуже подобається, як ви «вкрали» ідеї у Мейвена та застосували їх до своїх будівель Ant, щоб дотримуватися загальних умов і зробити перехід легшим для інших.
Ігор Чордаш

Щоб уникнути роздуття в pom.xmls, я генерую більшість з них за допомогою XSLT.
Демі

21

Мураха - це головним чином інструмент побудови.

Maven - це інструмент управління проектами та залежностями (який, звичайно, також будує ваш проект).

Ant + Ivy - це досить гарна комбінація, якщо ви хочете уникнути Мейвена.


Це. Порівняння між Ant + Ivy та Maven2 тут: ant.apache.org/ivy/m2comppare.html
Еско

Чому б ти хотів уникнути Мейвена? На мій досвід, Мейвен - одна з небагатьох частин приємного розвитку Java.
Бенсон

4
@ Бенсон: Це спірне питання. Якби це була срібна куля, тоді всі користувались би нею.
cherouvim

18

Просто перерахуйте ще кілька відмінностей:

  • У Мурахи немає офіційних умов. Ви мусите точно сказати Ant, де знайти джерело, куди поставити виходи тощо.
  • Мураха є процедурним. Ви мусите точно сказати Мураві, що робити; скажіть його складати, копіювати, потім стискати тощо.
  • У мурашки немає життєвого циклу.
  • Мейвен використовує конвенції. Він знає, де автоматично знаходиться ваш вихідний код, якщо ви дотримуєтесь цих умов. Вам не потрібно говорити Мейвен, де це.
  • Мейвен декларативний; Все, що вам потрібно зробити, - це створити файл pom.xml і помістити джерело в каталог за замовчуванням. Maven подбає про відпочинок.
  • Мейвен має життєвий цикл. Ви просто викликаєте mvn install і виконується ряд послідовних кроків.
  • Мейвен має розвідку щодо загальних завдань проекту. Щоб запустити тести, просто виконайте тест mvn , доки файли знаходяться у типовому місці. В Ant вам спочатку доведеться файл JUnit JAR є, потім створити класний шлях, що включає JUnit JAR, а потім сказати Ant, де він повинен шукати вихідний код тесту, написати ціль, яка компілює джерело тестування, а потім нарешті виконати одиничні тести з JUnit.

Оновлення:

Це прийшло з Maven: The Definitive Guide . Вибачте, я зовсім забув це процитувати.


Це було оновлення каламбура?
вакіо

1
@vakio - Я думаю, ти маєш на увазі, що я використовував "сайт" замість "цитувати"? Це з моєї сторони було абсолютно поганим написанням, і я це
виправив

17

Мейвен чи Мураха? - це дуже схоже на це питання, яке має допомогти вам відповісти на ваші запитання.

Що таке Мейвен? на офіційному сайті.

редагувати: Для нового проекту / greenfield я рекомендую використовувати Maven: "конвенція щодо конфігурації" заощадить вам пристойний шматок часу в написанні та налаштуванні сценаріїв збірки та розгортання. Коли ви використовуєте мураш, сценарій збірки, як правило, зростає з часом у довжину та складність. Для існуючих проектів важко підключити їх конфігурацію / компонування в систему Maven.


Maven заощадить ваш час на початку вашого проекту, але з часом, якщо у вас є щось, крім дуже простого проекту, сценарії Maven стануть набагато складнішими, ніж еквівалент Ant. Наприклад, подивіться на плагін Maven Assembly.
Кевін Стембрідж

Я заперечую, що робити те, що робить плагін Асамблеї - це набагато простіше зробити у форматі Maven (де ви викладете модель складання у форматі xml), ніж робити всі ручні кроки в Ant, але YMMV
matt b

Привіт Метт, крива навчання модуля збірки набагато крутіша, ніж для мурашиного завдання або zip. Формат дескриптора - це щось на зразок 150 рядків і містить цілу купу неінтуїтивних параметрів конфігурації. Крім того, це не працює! У той момент я відмовився від плагіну Assembly, фільтрація при розпакуванні не працювала, а також параметри файлового режиму не вдалося виправити. Не впевнений, що ви маєте на увазі під "усіма ручними кроками в мурашника". Я витратив близько 5 хвилин на те, щоб Ант зробив те, що не міг змусити збірку плагінів за години.
Кевін Стембрідж

3
Перше посилання зараз мертве: /
Метт Кларк

15

Maven виступає як інструментом управління залежністю - його можна використовувати для отримання банки з центрального сховища або зі сховища, яке ви створили, - і як декларативний інструмент збірки. Різниця між "декларативним" інструментом збирання та більш традиційним, як мураха або make, це те, що ви налаштуєте, що потрібно зробити, а не як це зробити. Наприклад, ви можете сказати в сценарії Maven, що проект повинен бути упакований у файл WAR, і maven знає, як з цим впоратися.

Мейвен спирається на конвенції про те, як складаються каталоги проектів, щоб досягти його "декларативності". Наприклад, у ньому встановлено домовленість про те, куди слід помістити основний код, куди помістити свій web.xml, тести вашого блоку тощо, але також дає можливість змінити їх, якщо потрібно.

Також слід пам’ятати про те, що для роботи команд мураха зсередини maven є плагін:

http://maven.apache.org/plugins/maven-ant-plugin/

Крім того, архетипи Мейвена дуже швидко роблять роботу з проектом. Наприклад, існує архетип Wicket, який забезпечує команду Maven, яку ви запускаєте, щоб отримати цілий готовий проект привіт світового типу.

https://wicket.apache.org/start/quickstart.html


11

Я можу взяти людину, яка ніколи не бачила Мураху - її build.xmlдобре написано - і вони можуть зрозуміти, що відбувається. Я можу взяти ту саму людину і показати їм Maven POM, і вони не матимуть уявлення про те, що відбувається.

У величезній інженерній організації люди пишуть про те, що файли Ant стають великими та некерованими. Я написав ці типи і очистив сценарії мурашок. Це дійсно заздалегідь розуміння того, що вам потрібно зробити вперед та розробка набору шаблонів, здатних реагувати на зміни та масштаби протягом 3+ років.

Якщо у вас не є простий проект, вивчити конвенції Мейвена та спосіб Maven щодо виконання справ - це зовсім небагато роботи.

Зрештою, ви не можете вважати запуск проекту разом з Ant або Maven фактором: це дійсно загальна вартість володіння. Що потрібно організації для підтримки та розширення системи побудови протягом декількох років, є одним з головних факторів, які необхідно враховувати.

Найважливіші аспекти системи побудови - це управління залежністю та гнучкість у викладі рецепту збірки. Це повинно бути дещо інтуїтивно зрозумілим, коли все зроблено добре.


6

Я б сказав, що це залежить від розміру вашого проекту ... Особисто я би використовував Maven для простих проектів, які потребують прямого складання, упаковки та розгортання. Як тільки вам потрібно зробити кілька складніших речей (багато залежностей, створення файлів відображення ...), я перейшов би на Ant ...


Я не погоджуюсь. Я погоджуюся, що корисно використовувати Maven для простих проектів, але я заперечую, що зі збільшенням складності ваші переваги від використання maven збільшуються на порядок.
Бенсон

Я також не згоден, Maven дійсно починає добре працювати, коли у вас є більш складна система з багатьма взаємопов'язаними модулями. Якщо вам потрібно писати функціональні тести, запускати звіти та розгортати артефакти до менеджера сховищ, чому б ви все це робили самі з Ant?
Тім О'Брайен

Мейвен чудово підходить для простого проекту, але в мене був кошмар часу, намагаючись зробити речі, які повинні бути простими у більш складному проекті. Наприклад, створення роздавального пакету, обтяжуючий код, створення пакету веб-запуску, налаштування профілів. @ Бенсон, коли ваш проект стає складнішим, Мевен стає кулькою і ланцюжком. Потужність та гнучкість Мурахи дадуть вам більше переваг продуктивності, ніж Maven. @tobrien, Ant працює чудово для багатомодульних проектів, написання функціональних тестів тощо. Налаштування плагінів звітування за замовчуванням у Maven зазвичай більш багатослівне, ніж аналог Ant.
Кевін Стембрідж

Я щойно почав додавати maven до вже існуючого проекту і виявив, що все працює не так, як очікувалося. Веб-сайт побудований на php і розгортається за допомогою сценарію. У Мейвіні це не працює нормально, вам потрібно зробити дуже дивні речі, щоб він працював.
Рауль Луна

4

Maven також розміщує велике сховище часто використовуваних проектів з відкритим кодом. Під час складання Maven може завантажити ці залежності для вас (як і ваші залежності :)), щоб зробити цю частину побудови проекту трохи більш керованою.


2
+1, побачивши, що потрібно для підтримки Центрального Maven Repository і працює, я повинен задзвонити і запропонувати всім, хто використовує щось на зразок Maven і Ivy, слід розглянути можливість установки менеджера сховищ. Не має значення, який з них, але я є частиною Nexus nexus.sonatype.org .
Тім О'Брайен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.