Наши приложения имеют совершенно разную природу и назначение. Однако, поскольку они различны, одно остается неизменным: все они являются веб-приложениями. В прошлом разработчики брали извлеченные уроки и шаблоны, полученные из одного приложения, и переносили их в следующее; и под переносом я имею в виду копирование и вставку. Ой! Каково одно преимущество, к которому стремятся разработчики с объектно-ориентированным дизайном? Возможно повторное использование кода? Подумайте о времени и деньгах, потраченных (потраченных) на то, чтобы заплатить нашим разработчикам за то, чтобы они пошли и переделали (заново изобрели) то, что мы уже сделали раньше.
Концептуально, архетип подобен форме или шаблону для сущности. В нашем случае архетип — это шаблон для программного проекта. Вы можете создавать архетипы для проектов на любой платформе: 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
команда, и я только что получил много недель развития и уменьшил головные боли.