Как добавить к проекту архетип maven
Перейти к содержимому

Как добавить к проекту архетип maven

  • автор:

Быстрое создание Maven-проекта для Selenium-тестов

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

К счастью, такая возможность создания проектов из готовых шаблонов уже есть в Maven. Называются такие заготовки “архетипами”, и для создания проекта из архетипа нужно использовать команду mvn archetype:generate , подробнее про неё можно почитать на официальной странице плагина maven-archetype-plugin

Но ведь нужен ещё шаблон, в котором уже настроены все нужные зависимости от Selenium и от тестовых фреймворков.

Чтобы сгенерировать проект для TestNG, надо запустить консоль, перейти в директорию, где должен быть создан проект, и выполнить вот такую команду (в консоли надо всё вводить в одну строчку):

mvn archetype:generate -DarchetypeGroupId=ru.stqa.selenium -DarchetypeArtifactId=webdriver-testng-archetype -DarchetypeVersion=2.0 -DgroupId=com.example -DartifactId=my_example_project

Разумеется, вместо com.example и my_example_project нужно указать ваши собственные значения, и желательно использовать последнюю доступную версию архетипа.

Аналогично создаётся проект, в котором предполагается использовать JUnit, надо лишь заменить параметр archetypeArtifactId :

mvn archetype:generate -DarchetypeGroupId=ru.stqa.selenium -DarchetypeArtifactId=webdriver-junit-archetype -DarchetypeVersion=2.0 -DgroupId=com.example -DartifactId=my_example_project

Ну и для любителей – исходный код архетипов можно найти здесь и здесь.

  • ← Интерация JUnit и TestNG со средами разработки IDEA, Eclipse и NetBeans
  • |
  • Запуск Selenium-тестов в браузере Opera →

Новые публикации

  • Опубликованы материалы конференции SeleniumConf London 2019
  • Запущен новый сайт selenium.dev
  • Вышел релиз Selenium 3.14
  • Вышел релиз Selenium 3.13
  • Вышел релиз Selenium 3.12

Создание архетипа Maven из существующего проекта

Создайте архетип из существующего проекта и сгенерируйте новые клоны с минимальными усилиями. Прекратите копи-паст проектов и создайте архетип!

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

Что такое архетип?

Архетип maven — это шаблонный проект. Maven предлагает несколько архетипов, которые позволяют создавать новые модули maven, готовые к запуску за несколько секунд.

Как использовать общий архетип?

Использовать архетип довольно просто. Если вы хотите сгенерировать архетип на основе списка по умолчанию, просто запустите:

mvn archetype:generate

Затем выберите один из вариантов, укажите детали и подтвердите. Новый проект уже будет создан.

Как использовать стандартный архетип?

В этом случае нам нужно указать groupId и artifactId архетипа, чтобы иметь возможность использовать настраиваемый. В качестве примера давайте посмотрим на архетип, предоставленный Adobe для AEM:

mvn archetype:generate \ -DarchetypeGroupId=com.adobe.aem \ -D archetypeArtifactId=aem-project-archetype \ -D archetypeVersion=27

Если вы запустите команду, вас спросят о некоторых свойствах вашего проекта. Некоторые свойства являются стандартными ( groupId , version , artifactId и package ), но другие были специфичны этого артефакта, как appTitle и sdkVersion . Эти свойства помогут архетипу сгенерировать для вас новый проект, и через несколько секунд, ничего не зная об Adobe AEM, вы получите свой новый проект, готовый к запуску.

Как работает архетип?

Внутри архетипа есть все файлы (pom-файл, классы, readme и т. д.) С переменными, которые будут заменены во время генерации проекта. В качестве примера вы можете увидеть эти переменные в нескольких частях файла pom ниже.

 4.0.0 $ $ $ ../pom.xml  $ $ - Core Core bundle for $ . 

Пример извлечен из проекта Github adobe/aem-project-archetype.

В Maven есть хорошая документация, как организовать и создать свой архетип с нуля.

Создание архетипа из проекта

В большинстве случаев поддерживать архетип сложно, потому что:

  1. Это не сам проект, поэтому вам нужно использовать свой архетип, чтобы увидеть, работает ли сгенерированный проект.
  2. Шаблоны — это хорошо, но их трудно читать, и вам нужно «представить», как будет выглядеть код после.
  3. Мы ленивы, и если это трудно понять, то будет сложно поддерживать. Люди вернутся к проектам копирования и вставки и заменят текст.

Простой способ обойти все эти ограничения — создать архетип из примера проекта. Наш примерный проект — это идеальный компилируемый проект со всеми желаемыми конфигурациями, которые мы хотим сохранить вместе в клонах.

Создайте свой пример проекта для архетипа

Некоторые желательные характеристики в проекте примера для архетипа:

  1. Он должен быть простым, но полным. Не забудьте включить все зависимости и по одному примеру каждого элемента вашего проекта. Например, если проект представляет собой микросервис, имеет смысл включить контроллер, службу и репозиторий.
  2. Назовите его связным образом (вы увидите это на следующих шагах). Я бы порекомендовал, например, иметь контроллер под названием ArchetypeExampleController , который общается с ArchetypeExampleService .
  3. В каждом файле поместите один и тот же префикс в переменные, чтобы их было легко заменить. Например, если вам нужна переменная для вашей ArchetypeExampleService , хорошее имя — archetypeVariableService .
  4. Включите dot-файлы как часть этого проекта и хороший файл readme.
archetype:create-from-project

Цель maven archetype:create-from-project — ключ к созданию архетипа из проекта.

В рамках конфигурации вы можете передать файл archetype.properties в качестве параметра. Этот файл свойств должен выглядеть так:

# these are standard properties package=com.almeida.tomas groupId=archetype.it artifactId=basic version=1.0.0-SNAPSHOT # here we add our personalized properties defaultClassPrefix=ArchetypeExample defaultVariablePrefix=archetypeVariable

Как вы видите выше, я включил только изменяющуюся часть файлов или переменных, и maven позаботится о их замене за меня.

Шаг-за-шагом

Давайте пройдем все шаги от нашего примера проекта архетипа до нашего архетипа.

1. Переименуйте все dot-файлы.

Известно, что dot-файлы не включаются в архетип. Поэтому нам нужно переименовать их, чтобы они также были включены в сгенерированный архетип (и последующий проект).

mv .gitignore dot.gitignore mv .file dot.file

2. Вызовите цель maven с желаемыми параметрами.

mvn -U clean archetype:create-from-project \ -Dinteractive=false \ -DkeepParent=true \ -DpropertyFile=archetype.properties \ -DpackageName=com.almeida.tomas \ -Darchetype.filteredExtensions=java,xml,md

В документации вы можете увидеть больше параметров и узнать, почему и когда они используются, но вкратце:

  • -Dinteractive=false : интерактивный режим отключен.
  • -DkeepParent=true : оставить родителя.
  • -DpropertyFile=archetype.properties : используйте наш файл archetype.properties для проверки переменных.
  • -DpackageName=com.almeida.tomas : имя пакета для источников java, который должен быть включен в архетип.
  • -Darchetype.filteredExtensions=java,xml,md : файлы с выбранными расширениями будут проверены, а содержимое и имя файлов будут изменены переменными.

3. Очистите сгенерированные метаданные архетипа.

В некоторых случаях генерация включает значение свойства по умолчанию, и мы хотим быть уверены, что все значения будут заполнены пользователем.

cd target/generated-sources/archetype/ sed -i 's/.*defaultValue.*//g' src/main/resources/META-INF/maven/archetype-metadata.xml 

4. Установите или разверните архетип.

Если вы запускаете эти команды локально, архетип в вашем локальном репо:

# be sure to be in the target/generated-sources/archetype folder mvn -B -U clean install

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

# deploy the archetype to repository mvn -B -U clean deploy

Используйте созданный вами архетип

Созданный архетип будет иметь такой же artifactId с суффиксом -archetype . Итак, исходя из нашего примера:

mvn archetype:generate \ -DarchetypeGroupId=tomas.examples \ -DarchetypeArtifactId=archetypeProject-archetype \ -DarchetypeVersion=1.0.0-SNAPSHOT

Теперь нас попросят указать значение для переменных по умолчанию и персонализированных переменных:

Define value for property 'groupId': com.tomas.almeida Define value for property 'artifactId': demo-project Define value for property 'version' 1.0-SNAPSHOT: 1.0.0-SNAPSHOT Define value for property 'package' com.tomas.almeida: com.tomas.almeida.domain Define value for property 'defaultClassPrefix': Demo Define value for property 'defaultVariablePrefix': demo 

Подтвердите, что значения, которые вы ввели, верны:

Confirm properties configuration: groupId: com.tomas.almeida artifactId: demo-project version: 1.0.0-SNAPSHOT package: com.tomas.almeida.domain defaultClassPrefix: Demo defaultVariablePrefix: demo Y: : Y 

Будет создана новая папка с именем artifacId. В нашем примере demo-project .

cd demo-project

Необходимо переименовать dot-файлы:

mv dot.gitignore .gitignore mv dot.file .file

Итак, теперь вы можете создать несколько клонов вашего примера проекта архетипа за считанные минуты!

Как добавить архетип maven в Intelij IDEA

Я учу Spring и пытался создать проект maven в Community версии. Не нашёл нужный архетип (webapp). И пытался добавить архетип, но он не добавлялся. Проделал операцию 2-3 раза ничего не получилось. Помогите пж

Danial
22.09.21 09:19:03 MSK

Архетип это из терминологии Maven, я так понимаю это шаблоны проектов, ну так создай проект как показано в документации Maven: вводи команды в терминале, проверь созданный проект, убедись что нет ошибок при сборки mvn clean install и затем открой его в Idea.
Если у тебя поставлен plugin Maven в Idea, то может сама настроить конфигурацию по pom.xml.
Все манипуляции проводишь в pom.xml, например добавляешь в pom.xml артефакт (зависимость), если после этого библиотека сама не загрузилась то жмешь в правой панели Maven кнопку Reload All Maven projects. Если не загрузилась опять то читаешь текст ошибки, анализируешь что там сказано и решаешь проблему.

anonymous
( 22.09.21 09:47:37 MSK )

Насколько я помню, комьюнити версия не будет нормально работать с проектом спринга в плане его индексирования как надо и прочих плюшек.

А по поводу архетипа: его можно добавить руками, взяв образец с мавен-централа.

Zhbert ★★★★★
( 22.09.21 10:06:15 MSK )
Ответ на: комментарий от Zhbert 22.09.21 10:06:15 MSK

Насколько я помню, комьюнити версия не будет нормально работать с проектом спринга в плане его индексирования как надо и прочих плюшек.

Будет. Индексирует любой classpath. Ultimate никогда не ставил, использовал Community даже когда работал на банк на галере среди пользователей Ultimate.

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

Ну и всякая мелочь типа нет поддержки FreeMarker темплейтов, но зато HTML работает отлично и поэтому никаких проблем с использованием thymeleaf. А если в фирме захотят чтоб я правил FreeMarker или Velocity темплейты то пусть они мне оплатят Ultimate.

anonymous
( 22.09.21 10:34:42 MSK )
Ответ на: комментарий от Zhbert 22.09.21 10:06:15 MSK

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

stevejobs ★★★★☆
( 22.09.21 13:49:10 MSK )
Ответ на: комментарий от stevejobs 22.09.21 13:49:10 MSK

но вот всякие продвинутые фишки код-анализа (вроде навигации по стринговым плейсхолдерам) работать не должны

Ну я про них и говорил.

Zhbert ★★★★★
( 22.09.21 13:50:15 MSK )

Зачем тебе архетип, чувак)

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

А если тебе нужен спринг, то идешь на https://start.spring.io/ и там генеришь себе новый проект под свои нужды

система архетипов Мавена довольно убогая и неудобная (мавен можно расширять для удобства, но обычно тем, кто умеет это делать — не нужен архетип webapp). Админка спринг-старта гораздо адекватней

stevejobs ★★★★☆
( 22.09.21 13:52:03 MSK )
Ответ на: комментарий от stevejobs 22.09.21 13:52:03 MSK

система архетипов Мавена довольно убогая и неудобная (мавен можно расширять для удобства, но обычно тем, кто умеет это делать — не нужен архетип webapp). Админка спринг-старта гораздо адекватней

Вот тут удваиваю. Как-то пытался сделать архетипом проект, в итоге плюнул.

Zhbert ★★★★★
( 22.09.21 13:54:46 MSK )
Ответ на: комментарий от Zhbert 22.09.21 13:50:15 MSK

Кажется, при текущем положении вещей джава стала такой сложной, что без код-анализа ее лучше не трогать))

Слава героям, которые умудряются программировать джаву в виме. Такие люди реально существуют и очень страдают

Зачем они это делают, впрочем, неясно. Если нет денег на Алтимейт, то Эклипс со спринговым плагином никто не отменял

stevejobs ★★★★☆
( 22.09.21 13:55:21 MSK )
Ответ на: комментарий от stevejobs 22.09.21 13:55:21 MSK

Слава героям, которые умудряются программировать джаву в виме. Такие люди реально существуют и очень страдают

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

Zhbert ★★★★★
( 22.09.21 13:57:08 MSK )
Ответ на: комментарий от stevejobs 22.09.21 13:55:21 MSK

Такие люди реально существуют и очень страдают

А ты их вживую видел?

MOPKOBKA ★★★
( 22.09.21 13:57:47 MSK )
Ответ на: комментарий от stevejobs 22.09.21 13:55:21 MSK

Зачем они это делают, впрочем, неясно. Если нет денег на Алтимейт, то Эклипс со спринговым плагином никто не отменял

Ну есть определенная доля фанатично упертых, которые либо просто все делают в виме, либо считают, что «нужно понимать код» и пишут все руками. Последнее, учитывая многословность джавы, вообще треш, угар и содомия, ИМХО.

Zhbert ★★★★★
( 22.09.21 13:58:13 MSK )
Ответ на: комментарий от MOPKOBKA 22.09.21 13:57:47 MSK

Тут такие крикуны были точно.

Zhbert ★★★★★
( 22.09.21 13:58:28 MSK )
Ответ на: комментарий от Zhbert 22.09.21 13:54:46 MSK

Буквально за месяцы до ковида общался с текущим мантейнером Мавена. Он неплохой чувак, но очень упертый относительно лучших практик ынтерпрайза двадцатилетней давности. На все вопросы о том, какого хрена всё такое отсталое и почему бы не скопипастить фичи того же npm, он отвечает как типичный лоровец: #ненужно, совсем уже вы там охренели, не можете в помник руками XML тэги дописывать, какие-то команды в командной строке хотите!

можно элементарно форкнуть мавен и добавить всё нужное, но кто об этом форке узнает?

stevejobs ★★★★☆
( 22.09.21 13:59:09 MSK )
Ответ на: комментарий от Zhbert 22.09.21 13:58:28 MSK

Ну я уверен это все рофлы, существуют ли такие люди в действительности, это вопрос.

MOPKOBKA ★★★
( 22.09.21 13:59:44 MSK )
Ответ на: комментарий от stevejobs 22.09.21 13:59:09 MSK

#ненужно, совсем уже вы там охренели, не можете в помник руками XML тэги дописывать, какие-то команды в командной строке хотите!

Ты сейчас про некий аналог артисана для ларавеля говоришь? Чтобы не руками править конфиг, а просто командой? ИМХО, не вижу ничего такого в том, чтобы добавить зависимость в ХМЛ, не так уж это запарно…

Zhbert ★★★★★
( 22.09.21 14:00:40 MSK )
Ответ на: комментарий от MOPKOBKA 22.09.21 13:59:44 MSK

Ну я уверен это все рофлы, существуют ли такие люди в действительности, это вопрос.

Ну не факт. Тут шизиков полно =)

Zhbert ★★★★★
( 22.09.21 14:01:05 MSK )
Ответ на: комментарий от MOPKOBKA 22.09.21 13:57:47 MSK

например, это джаваскрипт-разработчики, которым временами нужно пердолить на сервере не только Ноду, но еще и джаву (микросервисы на разном бывают написаны)

вкатиться в простой сервер на жс или го, или руби с пайтоном можно довольно быстро. А вот от того, сколько в джаве слоёв ынтерпрайзного нужно познать и прикрутить какой-то тулинг — у человека духовно неподготовленного вызывает взрывной бугурт

я своими глазами видел, как суперсиньёрный жс-разработчик из Гугла по SSH уныло пытался wget-ом скачать мавен и потом в терминале и виме создавал структуру проекта для вебаппа. Было очень горько за джаву. И причём, ничем не поможешь же тут.

stevejobs ★★★★☆
( 22.09.21 14:02:51 MSK )
Последнее исправление: stevejobs 22.09.21 14:03:41 MSK (всего исправлений: 1)

Ответ на: комментарий от Zhbert 22.09.21 14:00:40 MSK

ИМХО, не вижу ничего такого в том, чтобы добавить зависимость в ХМЛ, не так уж это запарно…

ну например, мне иногда нужно генерировать проекты, чтобы собирать кастомные сборки

иногда мне нужно делать новые проекты из командной строки, например всякие микросервисы-однострочники, которые берут на вход HTTP GET ?q=, процессят параметр одной строчкой и отдают ниже по пайплайну

какая-то элементарная команда вроде «mvnx add spring latest» у меня написана уже, конечно. Тупо парсю XML, втыкаю куда надо, всё вы таком духе.

или например, «mvnx upgrade all latest-stable»

или например, динамические версии корневого проекта, в зависимости от переменных окружения (у меня это сделано экстеншеном, когда-то скопипащенным у… атлассиана?)

Вопрос в том, что это мог бы сделать и основной проект Мавена. Я даже предлагал влить этот код им. Только вот от идеи команды для апгрейда версий мантейнеры пришли в ужас. Типа, поощряет плохие практики, версии нужно хорошо обдумывать головой и сложность изменения — это хорошо, а не нравится — валите в этот ваш джаваскрипт, а у нас тут есть свой бог — Ынтерпрайз

Услышав эти слова, Заратустра поклонился святому и сказал: «Что мог бы я дать вам! Позвольте мне скорее уйти, чтобы чего-нибудь я не взял у вас!»

Так разошлись они в разные стороны, старец и человек, и каждый смеялся, как смеются дети.

Но когда Заратустра остался один, говорил он так в сердце своем: «Возможно ли это! Этот святой старец в своем лесу еще не слыхал о том, что Бог мертв».

stevejobs ★★★★☆
( 22.09.21 14:11:30 MSK )
Ответ на: комментарий от stevejobs 22.09.21 14:02:51 MSK

MOPKOBKA ★★★
( 22.09.21 14:18:55 MSK )
Ответ на: комментарий от stevejobs 22.09.21 13:55:21 MSK

Я вот нынче helidon se пробую. И ты знаешь — офигенная штука. Вообще никакой магии, обычная жава. Вот мой main:

 public static void main(String[] args) < LogConfig.configureRuntime(); log = Logger.getLogger(Main.class.getName()); var config = Config.create(); var appConfig = config.get("app"); var serverConfig = config.get("server"); var routing = Routing.builder() .register("/sync", new SyncService(appConfig)) .build(); var webServer = WebServer.builder(routing) .config(serverConfig) .build(); webServer.start() .thenAccept(ws -> < log.info("Web server is available at http://127.0.0.1:" + ws.port() + "/"); getRuntime().addShutdownHook(new Thread(() ->ws.shutdown().await())); >) .exceptionallyAccept(e -> < log.log(SEVERE, "Web server startup failed", e); >); > 

Вот мой хэндлер (кусок)

 @Override public void update(Routing.Rules rules) < rules.post("//", this::postHandler); > private void postHandler(ServerRequest request, ServerResponse response) < request.headers().contentType().ifPresent(contentType -> < if (!contentType.equals(APPLICATION_XML)) < throw new HttpException("Unsupported Media Type", UNSUPPORTED_MEDIA_TYPE_415); >>); String endpoint = request.path().param("endpoint"); String service = request.path().param("service"); EndpointData endpointData = appConfig.get("endpoint." + endpoint).as(EndpointData::fromConfig).orElseThrow(() -> new HttpException("endpoint", BAD_REQUEST_400)); ServiceData serviceData = appConfig.get("service." + service).as(ServiceData::fromConfig).orElseThrow(() -> new HttpException("service", BAD_REQUEST_400)); request.content().as(byte[].class) .onError(response::send) .flatMapSingle(body -> processRequest(endpointData, serviceData, body)) .forSingle(responseBody -> < response.headers().contentType(APPLICATION_XML); response.send(responseBody); >); > 

Один минус — асинхронное дерьмо. Но с этим ещё долго жить. Впрочем в спринг его тоже умудряются протащить. В остальном только плюсы. Стартует моментально. Память жрёт умеренно, в JVM режиме пустой сервер я запустил на -Xmx6m. В теории компилируется граалем. Под капотом netty, то бишь работает настолько быстро, насколько только возможно. Сам проект самый, что ни на есть, обычный и скучный мавен. Там какие-то плагины есть, но что они делают, я до сих пор не понимаю, по-моему ничего не делают. Единственное — я не по их quickstart-у делал, а ручками, но это мелочи.

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

Тут даже модули прописаны у всех библиотек. Я впечатлился и в своё приложение тоже module-info.java добавил, прикольно, никогда так не делал.

Legioner ★★★★★
( 22.09.21 15:59:49 MSK )
Последнее исправление: Legioner 22.09.21 16:02:52 MSK (всего исправлений: 3)

Maven – Шаблоны проектов

Maven предоставляет пользователям очень большой список различных типов шаблонов проектов (614 номеров), использующих концепцию Archetype . Maven помогает пользователям быстро запустить новый проект Java, используя следующую команду.

mvn archetype:generate

Что такое архетип?

Archetype – это плагин Maven, задачей которого является создание структуры проекта согласно его шаблону. Мы собираемся использовать плагин для быстрого запуска архетипов, чтобы создать простое Java-приложение здесь.

Использование шаблона проекта

Давайте откроем командную консоль, перейдем в каталог C: \> MVN и выполним следующую команду mvn .

C:\MVN>mvn archetype:generate

Maven начнет обработку и попросит выбрать нужный архетип.

[INFO] Scanning for projects. [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] ------------------------------------------------------------------- [INFO] Building Maven Default Project [INFO] task-segment: [archetype:generate] (aggregator-style) [INFO] ------------------------------------------------------------------- [INFO] Preparing archetype:generate . 600: remote −> org.trailsframework:trails-archetype (-) 601: remote −> org.trailsframework:trails-secure-archetype (-) 602: remote −> org.tynamo:tynamo-archetype (-) 603: remote −> org.wicketstuff.scala:wicket-scala-archetype (-) 604: remote −> org.wicketstuff.scala:wicketstuff-scala-archetype Basic setup for a project that combines Scala and Wicket, depending on the Wicket-Scala project. Includes an example Specs test.) 605: remote −> org.wikbook:wikbook.archetype (-) 606: remote −> org.xaloon.archetype:xaloon-archetype-wicket-jpa-glassfish (-) 607: remote −> org.xaloon.archetype:xaloon-archetype-wicket-jpa-spring (-) 608: remote −> org.xwiki.commons:xwiki-commons-component-archetype (Make it easy to create a maven project for creating XWiki Components.) 609: remote −> org.xwiki.rendering:xwiki-rendering-archetype-macro (Make it easy to create a maven project for creating XWiki Rendering Macros.) 610: remote −> org.zkoss:zk-archetype-component (The ZK Component archetype) 611: remote −> org.zkoss:zk-archetype-webapp (The ZK wepapp archetype) 612: remote −> ru.circumflex:circumflex-archetype (-) 613: remote −> se.vgregion.javg.maven.archetypes:javg-minimal-archetype (-) 614: remote −> sk.seges.sesam:sesam-annotation-archetype (-) Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 203:

Нажмите Enter, чтобы выбрать опцию по умолчанию (203: maven-archetype-quickstart)

Maven попросит конкретную версию архетипа.

Choose org.apache.maven.archetypes:maven-archetype-quickstart version: 1: 1.0-alpha-1 2: 1.0-alpha-2 3: 1.0-alpha-3 4: 1.0-alpha-4 5: 1.0 6: 1.1 Choose a number: 6:

Нажмите Enter, чтобы выбрать опцию по умолчанию (6: maven-archetype-quickstart: 1.1)

Maven попросит детали проекта. Введите детали проекта в соответствии с просьбой. Нажмите Enter, если указано значение по умолчанию. Вы можете переопределить их, введя свое значение.

Define value for property 'groupId': : com.companyname.insurance Define value for property 'artifactId': : health Define value for property 'version': 1.0-SNAPSHOT: Define value for property 'package': com.companyname.insurance:

Maven запросит подробное подтверждение проекта. Нажмите ввод или нажмите Y.

Confirm properties configuration: groupId: com.companyname.insurance artifactId: health version: 1.0-SNAPSHOT package: com.companyname.insurance Y:

Теперь Maven начнет создавать структуру проекта и отобразит следующее:

[INFO]----------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1 [INFO]----------------------------------------------- [INFO] Parameter: groupId, Value: com.companyname.insurance [INFO] Parameter: packageName, Value: com.companyname.insurance [INFO] Parameter: package, Value: com.companyname.insurance [INFO] Parameter: artifactId, Value: health [INFO] Parameter: basedir, Value: C:\MVN [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: C:\MVN\health [INFO]----------------------------------------------- [INFO] BUILD SUCCESSFUL [INFO]----------------------------------------------- [INFO] Total time: 4 minutes 12 seconds [INFO] Finished at: Fri Jul 13 11:10:12 IST 2012 [INFO] Final Memory: 20M/90M [INFO]-----------------------------------------------

Созданный Проект

Теперь перейдите в каталог C: \> MVN . Вы увидите созданный проект Java-приложения с именем health , который был указан как artifactId во время создания проекта. Maven создаст стандартную структуру каталогов для проекта, как показано ниже –

структура проекта

Создано POM.xml

Maven создает файл POM.xml для проекта, как указано ниже –

 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/xsd/maven-4.0.0.xsd"> 4.0.0  com.companyname.insurance  health  1.0-SNAPSHOT  jar  health  http://maven.apache.org   UTF-8     junit  junit  3.8.1  test    

Создано App.java

Maven создает образец исходного файла Java, App.java для проекта, как указано ниже –

Расположение: C: \> MVN> здоровье> src> main> java> com> название компании> страхование> App.java .

package com.companyname.insurance; /** * Hello world! * */ public class App < public static void main( String[] args ) < System.out.println( "Hello World!" ); >>

Создан AppTest.java

Maven создает образец исходного тестового файла Java, AppTest.java для проекта, как указано ниже –

Расположение: C: \> MVN> здоровье> src> test> java> com> название компании> страхование> AppTest.java .

package com.companyname.insurance; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Unit test for simple App. */ public class AppTest extends TestCase < /** * Create the test case * * @param testName name of the test case */ public AppTest( String testName ) < super( testName ); >/** * @return the suite of tests being tested */ public static Test suite() < return new TestSuite( AppTest.class ); >/** * Rigourous Test �� */ public void testApp() < assertTrue( true ); >>

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

Maven-архетип-архетип

Архетип, который содержит образец архетипа.

Maven-архетип-j2ee-простой

Архетип, который содержит упрощенный пример приложения J2EE.

Maven-архетип-мохо

Архетип, который содержит образец образца плагина Maven.

Maven-архетип-плагин

Архетип, который содержит образец плагина Maven.

Maven-архетип-плагин-сайт

Архетип, содержащий образец сайта плагина Maven.

Maven-архетип-портлет

Архетип, содержащий образец портлета JSR-268.

Maven-архетип-Quickstart

Архетип, который содержит пример проекта Maven.

Maven-архетип-простой

Архетип, который содержит простой проект Maven.

Maven-архетип-сайт

Архетип, который содержит образец сайта Maven для демонстрации некоторых поддерживаемых типов документов, таких как APT, XDoc и FML, и демонстрирует, как включить ваш сайт.

Maven-архетип-сайт-простой

Архетип, который содержит образец сайта Maven.

Maven-архетип-WebApp

Архетип, который содержит пример проекта Maven Webapp.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *