Статьи

Оптимизация создания проекта с помощью Maven Archetypes

Я работаю в очень динамичной команде разработчиков программного обеспечения. За 5 лет мы разработали около 20 полноценных веб-приложений.
Наши приложения имеют совершенно разную природу и назначение. Однако, поскольку они различны, одно остается неизменным: все они являются веб-приложениями. В прошлом разработчики брали извлеченные уроки и шаблоны, полученные из одного приложения, и переносили их в следующее; и под переносом я имею в виду копирование и вставку. Ой!  Каково одно преимущество, к которому стремятся разработчики с объектно-ориентированным дизайном? Возможно повторное использование кода?  Подумайте о времени и деньгах, потраченных (потраченных) на то, чтобы заплатить нашим разработчикам за то, чтобы они пошли и переделали (заново изобрели) то, что мы уже сделали раньше. 










Концептуально, архетип подобен форме или шаблону для сущности. В нашем случае архетип — это шаблон для программного проекта. Вы можете создавать архетипы для проектов на любой платформе: Java, Python, PHP и т. Д.



Чтобы решить эту проблему, я решил использовать Maven Archetypes. Наша команда уже успешно использовала Maven для сборки, поэтому это был естественный шаг вперед для нас. 
Я наткнулся на отличную пошаговую статью: http://blog.inflinx.com/2010/04/16/creating-maven-archetypes-spring-mvc-example/




В настоящее время я создал проект архетипа нашего отдела, и он будет готов к использованию, когда придет время создавать еще одно веб-приложение для наших клиентов. Идея заключалась в том, чтобы закодировать наибольший общий знаменатель компонентных лесов, необходимый для запуска команды разработчиков программного обеспечения, которой нужно было только беспокоиться о проблеме, специфичной для конкретной области.  
Мы в значительной степени полагаемся на платформу Google App Engine и Google Web Toolkit (GWT) для клиента. В рамках архетипа я добавил такие вещи, как:





  • Стратегия единого входа
  • MVC Framework
  • Решение для резервного копирования
  • Стандартный файл POM (очень важно)
  • Общие служебные классы, которые мы переписываем каждый раз.
  • Библиотеки Google App Engine
  • Базовый уровень DAO с общими объектами
  • Основные сервисы уровня приложений
  • Интеграция GWT с RPC и библиотекой виджетов. Модульное тестирование с использованием GWT Test Case.

Это время и деньги, которые можно было бы сэкономить и инвестировать в более предварительный дизайн, документацию в конкретной проблемной области. Это упростило и ускорило настройку среды разработки и скачкообразных решений, менее подверженных ошибкам. Если в вашей организации есть какие-либо политики проверки кода, это единственное, что следует указать на радаре. Мы используем Crucible на работе, и это сам по себе проект, который проверяет код всех руководителей команд и старших членов. Это ядро ​​всех проектов. 
В заключение, я думаю, что вы обнаружите, что в создании архетипа много работы, поскольку вам необходимо абстрагироваться от всех общих компонентов для вашей организации, но возврат инвестиций является многообещающим.  В следующий раз, когда нам нужно будет заняться другим проектом, я просто выдаю:



mvn archetype:generate -DarchetypeGroupId=net.rt.blog.maven.archetype 
-DarchetypeArtifactId=maven-gwt-gae-archetype -DgroupId=net.rt.blog -DartifactId=myproject





команда, и я только что получил много недель развития и уменьшил головные боли.