Не связывайтесь с архетипами до позднего времени
Чтобы получить всю информацию о Maven, прочитайте некоторые книги на их веб-сайте . Тем не менее, это немного излишне для того, что вы пытаетесь достичь.
Для начала разложите ваше веб-приложение, следуя стандартной структуре Maven для веб-приложений, как указано ниже. (Для этого вам не нужен архетип Maven, это просто набор стандартных папок, вы можете сделать это за 2 минуты).
src/main/java
- содержит ваш производственный Java-код
src/main/resources
- содержит ваши производственные ресурсы classpath (например, контексты Spring)
src/main/webapp
- (содержит WEB-INF / web.xml, но без папки lib)
src/test/java
- содержит ваш тестовый код Java
src/test/resources
- содержит ваши тестовые ресурсы (например, XML-каналы для тестирования веб-сервисов и т. д.)
Основные плагины
Следующим шагом является выбор связки плагинов. Обычные подозреваемые, очевидно, те, которые поддерживают clean, compile и resources (входят в состав Maven, но вы можете настроить их). Тогда у вас будет верный тестер модулей и плагин WAR. Этого достаточно, чтобы создать очень простое веб-приложение.
Более продвинутые плагины
Следующий шаг - представить плагины Findbugs и PMD, которые подробно рассмотрят ваш код и сообщат о возможных проблемах. Возможно, вы захотите использовать JXR для перекрестных ссылок на исходный код, список тегов для отслеживания TODO и теги REFACTOR и так далее. Превыше всего...
... Используйте плагин Jetty для веб-приложений
Используйте плагин Jetty для запуска файла WAR в вашей IDE для простой отладки. Это быстро и мало и делает работу очень быстро. Наличие Jetty в составе вашей сборки Maven позволяет тестировать ваш проект на любом компьютере без IDE с настроенной панелью некоторых сложных серверов. Это также позволяет вам объявлять зависимости от других файлов WAR, что, в свою очередь, означает, что вы можете создать полную рабочую среду, состоящую из нескольких веб-приложений, с помощью одной команды "mvn clean jetty: run". Это работает где угодно, и вы даже можете предоставить тестовую конфигурацию JNDI, чтобы все источники данных Spring-Injected были настроены извне. Если вы объедините этот подход Jetty со стандартной демонстрационной HTML-страницей (src/test/resources/demo.html
) вы сэкономите кучу часов разработчика, пытаясь получить работающую локальную среду. Одна команда и все готово. Просто.
Конфигурирование вашей IDE
С Maven это легко, поскольку его поддерживают все большие парни: Eclipse, Netbeans и, конечно, мой любимый Intellij. Просто наведите вашу IDE на pom.xml, и он позаботится о том, чтобы снять все перечисленные зависимости для вас. Нет больше отвода о с WEB-INF/lib
. В Eclipse вы обычно используете File | Импорт ... | Maven Project | pom.xml.
Интеграция с Гудзоном
Сначала установите Hudson (это просто веб-приложение), а затем настройте свою систему контроля версий, чтобы она проверяла соответствующую версию. Ваш последний шаг - настроить его так, чтобы он использовал Maven для сборки. Очевидно, что Maven должен быть установлен на вашем компьютере сборки (при условии, что он отличается от вашего компьютера разработки).
Хадсон делает только снимок
Пусть Хадсон выполнит сборку снимков и оставит сборки релизов вручную. Использование такого подхода будет означать, что разработчики могут делиться своим кодом в редакции моментального снимка (например, 1.0.0-SNAPSHOT), и только если он сможет пройти сборку, он будет передан в репозиторий команды. Как правило, Hudson выполняет «mvn clean deploy», хотя включение цели «site» также может быть частью вашего процесса, поскольку для каждой сборки будет создаваться небольшой веб-сайт проекта. Разработчики в команде получат обновленную сборку моментальных снимков, автоматически включенную в их проект посредством процесса управления зависимостями Maven.
Hudson предоставляет множество плагинов, которые могут поддерживать всевозможные метрики. Мой личный фаворит - следить за количеством пройденных тестов за проект с течением времени. Замечательно показать руководству, что количество ваших юнит-тестов и охват постоянно растут.
Общее руководство по настройке
Разделите ваши репозитории по крайней мере на следующую структуру:
- team-release - все ваши выпущенные производственные артефакты идут сюда
- team-snapshot - все ваши артефакты разработки снимков находятся здесь
- Сторонний релиз - все ваши сторонние библиотеки поддержки (например, Spring, Hibernate и т. д.)
Учетные записи разработчиков не должны быть в состоянии записывать в репозитории команды ни снимок, ни выпуск. Это позволило бы разработчику обойти Хадсона, если он спешит и быстро станет нормой.
Убедитесь, что вы всегда скачиваете исходный код, javadocs и подписи SHA для всех ваших третьих лиц. Jarvana - отличный исследователь репозитория для всех тех, кто трудно найти классы.
Подумайте об установке менеджера хранилища, такого как Nexus или Artifactory, чтобы обеспечить лучший контроль над постоянно растущим хранилищем.