2008-09-19 3 views
8

У меня есть побочный проект I do = in Java. Это довольно простой webapp. Он работает в Tomcat на сервере Linux и использует базу данных MySQL. Большая часть кода была написана с помощью Spring Framework. В нем много модульных тестов. Когда я кодирую это в Eclipse. Когда я развертываю приложение, я запускаю несколько сценариев оболочки для перемещения WAR-файла на веб-сервер, обновления базы данных и изменения конфигураций Apache. Я единственный разработчик, работающий над этим, и сейчас он только развертывается в 1 среде (производстве), хотя в какой-то момент я, возможно, захочу иметь среду тестирования или промежуточной сборки. Я использую контроль версий SVN через подключаемый модуль Eclipse.Думая о обучении Maven

Я всегда слышу о людях, использующих Maven для своих проектов. Поскольку так много людей используют это, я говорю себе, что это должно быть хорошо. Я хотел бы узнать это в свободное время. Единственное, что я не совсем продаю, почему я хочу использовать Maven? Мой первый абзац звучит как проект, подходящий для Maven? Имеет ли он какие-либо конкретные преимущества для проекта, который взаимодействует с базой данных?

ответ

4

Ваш проект не похож на проект, подходящий для Maven. У вас, похоже, есть рабочая среда разработки. Зачем настраивать еще один? Он просто даст вам еще один файл проекта, который будет поддерживать то, что нарушает хороший принцип «DRY».

6

Я использую maven в гневе на работе. Это суровая любовница. Это упрощает работу, если вы делаете то, что есть у многих других людей, и это важно, если вы делаете это так, как maven думает, что вы должны их делать. Отступите от этого узкого пути, и он будет сражаться с вами на каждом шагу.

Я был поражен от BuildR от использования этого на стороне. Он гибкий, как ANT, при использовании системы зависимостей maven. Кроме того, он находится в инкубации, поэтому он немного шероховат по краям.

+2

Основной предпосылкой Maven является «Конвенция по конфигурации», то есть они выполняют всю работу за вас, если и только если вы подчиняетесь своим (общим и вообще легкому проживанию) парадигмам конвенций. По этой причине старые проекты в maven часто приводят к катастрофе. – 2009-01-02 17:03:25

+1

@Spencer K: Условные обозначения - хорошая идея. Проблема с maven заключается в том, что она близорука и негибкая. – sblundy 2009-01-02 18:55:58

3

Мы делаем именно то, что вы делаете в наших проектах, и мы используем maven. Вы хотите использовать maven для стандартизованного макета и способа создания вашего проекта. Вам никогда не придется хранить все эти зависимости jar в SVN или держать их где-то особенными, maven делает это для вас. Maven также служит средством, позволяющим другим разработчикам легко понять ваш проект. После того, как вы начнете использовать его, вы никогда не захотите оглянуться назад.

+0

Делает ли это что-то конкретное, хотя для веб-приложения, управляемого DB? Например, делает ли он что-нибудь для запуска сценария базы данных или обновляет правила перезаписи Apache или что-то еще. – bpapa 2008-09-19 20:35:26

+0

Мы используем maven вместе с dbunit (http://www.dbunit.org/) для запуска сценариев базы данных (инициализация таблиц, заполнение db). Maven действительно не делает ничего особенного, это dbunit, который выполняет эту работу. – neu242 2008-09-19 20:37:58

11

Maven отлично подходит для вашего проекта IMO. Maven - это инструмент управления развертыванием и развертыванием. Самая большая сила заключается в том, что он делает скрипты сборки значительно более надежными, чем функционально сопоставимые файлы Ant или сценарии оболочки.

Существует множество преимуществ использования maven, являющегося самым большим существом, предпочтение от которого зависит от конфигурации. Это означает, что если вы планируете проект, используя структуру каталогов Maven, для его создания и запуска тестов JUnit практически не требуется настройка.

Другая большая победа, которую дает вам Maven, - это управление зависимостями. Вы можете декларативно определять зависимости вашего проекта в файле конфигурации Maven, называемом объектной моделью проекта (POM), и Maven выполняет работу по хранению всех банок в структуре локальных каталогов, которые он поддерживает. В случае общедоступных артефактов банки автоматически загружаются из центрального хранилища Maven, а в случае внутренних или проприетарных сторонних баннеров вы можете установить их в свой репозиторий с помощью одной команды.

Помимо организации этих артефактов и автоматической настройки пути к классу сборки, чтобы включить все необходимые банки, maven также будет управлять иерархиями зависимостей. Это означает, что если ваш проект зависит от jar A и A зависит от jar B, jar B будет автоматически связан с вашей WAR, даже если вы явно не укажете его как зависимость в конфигурации сборки.

Кроме того, я хочу сказать, что с точки зрения профессионального развития имеет смысл изучать Maven, так как в моем опыте Maven обогнал Ant как инструмент выбора де-юре как в open-source, так и в проприетарных Java-проектах.

Все это говорит о том, что если у вас есть система сборки, которая быстра и надежна для вас, то, возможно, не стоит пытаться преобразовать ее в Maven только ради использования того же инструмента, что и все остальные.

8

Maven будет в порядке, что вы хотите. В отличие от большинства инструментов сборки, Maven использует соглашения с умом (хорошо, лучше, чем многие другие, по крайней мере), и у него есть «плагины» для каждой области вы упомянули:

тесты Раздел: maven surefire plugin

Eclipse, интеграция: m2eclipse

развертывание WAR-файл: WAR plugin и Deploy plugin

Maven также может помочь вам в интеграционных тестах на Tomcat (если у вас есть немного), так как вы можете запускать, останавливать или развернуть войну с помощью cargo plugin.

В любом случае, если вы планируете читать в свободное время, вот бесплатная книга (формат PDF): Maven the definitive guide

Надеется, что это помогает!

2

Помимо того, что многие проекты oss используют (или конвертируют) maven и некоторые проекты с закрытым исходным кодом перемещаются в maven, ваш проект НЕ обязательно сильно выгоден от использования Maven.

Однако, если вы рассмотрите возможность открытого поиска, пользователи вашего проекта могут извлечь выгоду из вашего проекта, использующего maven.

Некоторые из важных преимуществ maven (jar dependencies) могут быть выполнены с плющом (http://ant.apache.org/ivy/).

Опять же, поскольку вы, кажется, указываете, что являетесь единственным разработчиком. если maven не работает для вас, вы можете быстро вернуться назад.

BR,
~ A

1

не делать. Посмотрите, что другие люди saying, и тщательно исследуйте. Также подумайте о некоторых моих других комментариях о Maven здесь, на SO.

0

Я использовал maven для управления зависимостями некоторое время назад, потому что я устал добавлять все банки, если бы захотел проверить его на другой коробке или около того. Вам действительно не нужно «учиться» этому, это не займет много времени, пока вы не научитесь этому.

Однако проще всего попросить кого-нибудь, кто уже знает mvn, чтобы он мог показать вам, как это работает, а затем вы изучаете его довольно быстро.

4

Я когда-то начал новую работу по темпу, которая использовала Maven. Сожжены 2 дня, пытаясь понять, как работает их maven. Оказалось, что все они использовали maven 1.01 на окнах, и я нечаянно пытался построить 1.02, так что это не сработало для меня. Никто в новом месте не работал, и они использовали его в течение нескольких месяцев, и они были довольны этим. Несколько месяцев спустя в том же проекте мне пришлось глубоко вникать в скрипты желе, чтобы изменить одну строковую переменную. Это было не весело.

Когда я впервые начал использовать его, я прочитал «соглашение по конфигурации» и «использует стандартный набор каталогов». Этого я не мог найти в документах. Думаю, ты должен был догадаться.

Моих мнений:

  • любого инструмент, который вы используете, что вы не совсем понимаете это ошибка, и потенциальная лодка якорь процесса разработки. Если инструмент действительно, действительно сложный, вы можете использовать простейшие его части, а не усваивать его глубоко. Если вы не используете или не уклоняетесь от наиболее мощных частей инструмента, вы, вероятно, побеждаете цель его использования.
  • Maven - это классический пример чего-то такого полного автомагического добра, что вы не знаете, что он делает, если вы не посвящаете гораздо больше своего времени, чем инструмент построения, заслуживающий того, чтобы стать maven maven. Переработанное решение в поисках проблемы.
  • Я не нашел примеров того, что мне нужно было сделать, что я не мог сделать с муравьями и нуждался в них. Я знаю, что есть некоторые, я просто не нуждался в них. Если бы я это сделал, я, вероятно, был бы более благотворительным в отношении усилий, необходимых для работы с maven.
  • Это заставляет ваше построение зависеть от Интернета. Сейчас не редкость загружать небольшой проект, запускать mvn и загружать 10 плагинов maven, прежде чем он даже начнет создавать то, что вы пытаетесь построить в первую очередь. Что он делает? На самом деле не знаю, но вам лучше надеяться, что это не сломается. Когда он терпит неудачу, сложность отказа и сложенные слои зависимостей делают его по сути безнадежным для отладки. Я не понимаю, почему это каким-то образом является улучшением простых инструментов сборки или даже желательно по любой причине.

Таким образом, это почти волшебство, за исключением того, что, когда оно не работает, вы, вероятно, не знаете, почему. Это кажется плохим компромиссом. Это было, справедливости ради, несколько лет назад. Я знаю, что я недобрый, и он улучшен в последующих версиях (которые я также использовал). Тем не менее, я его ненавидел (не могли бы вы рассказать?)

0

Одна из величайших сильных сторон Maven заключается в том, что он делает много управления построением и зависимостью без написания скриптов сборки или даже для описания процесса сборки. У вас уже есть настройка вашего проекта, поэтому вам не пригодится Maven, устанавливающая оболочку проекта для вас или загрузку зависимостей, которые вы указываете, без необходимости их индивидуальной загрузки. Если ваша цель - научиться использовать и администрировать Maven, делая это для такого проекта, где нет других разработчиков, и процесс сборки очень прост (из того, что я могу сказать) тоже не поможет. Поэтому я бы рекомендовал не использовать Maven для существующего проекта.

Я бы, однако, установил простое тестовое приложение, подобное вашему, используя Maven и сравнив его с структурой вашего проекта, чтобы увидеть, следуете ли вы лучшим практикам (по крайней мере, как это делают разработчики Maven), и если ваше приложение соответствует стандартным соглашениям о веб-приложениях ,

Смежные вопросы