Как добавить к проекту архетип 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 и накидать в него необходимые модули воспользуемся тем же механизмом архетипов.

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

mvn archetype:generate

команда mvn generate archetype

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

команда mvn generate archetype interactive mode

Шаблоны (archetype) можно искать как по названию, так и по groupdId. Можно выбрать номер, если точно знаете какой. Нас интересует архетип под названием pom-root. Ищем.

команда mvn generate archetype interactive mode поиск root

Обратите внимание, что нумерация теперь начинается по новому. Выбираем нужный нам пункт 3 org.codehaus.mojo.archetypes:pom-root и жмём enter.

команда maven archetype generate выбор версии шаблона

Выбираем последнюю версию (1.1 под номером 3). Далее maven скачает необходимые файлы и предложит заполнить свойства проекта.

команда mvn generate archetype interactive mode ввод свойств проекта

Заполняем. И жмём enter.

команда maven archetype generate успешная генерация проекта

Готово. У нас появилась папка maven-root-test, в которой появился pom.xml и ничего больше. Содержимое 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 > >ru.maksimvoloshin > >maven-root-test > >1.0-SNAPSHOT > >pom > >maven-root-test > >

Пол дела сделано! Теперь можем закидывать какие угодно модули внутрь, используя groupdId ввиде родительских groupId.artifactId. Для этого нужно запускать

mvn archetype:generate

из папки только что созданного пустого проекта. Я создал подмодуль из архетипа webapp-javaee6 со следующими параметрами:

команда mvn generate archetype создание подмодуля

Теперь в нашей папке появилась ещё одна: maven-root-test-child со своим pom.xml, в котором указан родительский pom.xml, и прочим содержимым. А корневой pom.xml немного поменялся и теперь выглядит вот так:

 version="1.0" encoding="UTF-8"?>  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 > >ru.maksimvoloshin > >maven-root-test > >1.0-SNAPSHOT > >pom > >maven-root-test > > >maven-root-test-child > > >

Ошибка при создании проекта в Maven с использованием архетипа webapp

При создании проекта в IntelijIdea на Maven использую архетип maven-archetype-webapp . После того, как прописываю названия GroupId , ArtefactId и ProjectName открывается сам проект, но: Во первых нет структуры папок; Во вторых выдает в консоли ошибку:

Error: Could not find or load main class ��� Caused by: java.lang.ClassNotFoundException: ��� 

введите сюда описание изображения

Отслеживать

Artur Vartanyan

задан 7 янв 2020 в 10:16

Artur Vartanyan Artur Vartanyan

1,166 5 5 золотых знаков 17 17 серебряных знаков 40 40 бронзовых знаков

Создайте проект без архитипа.

7 янв 2020 в 10:57

Вы точно дожидаетесь конца подгрузки проекта?

7 янв 2020 в 12:01

Да, конечно! Ошибка выдается сразу после того, как все подгрузится.

7 янв 2020 в 14:29

А как без архетипа создать, если он мне требуется?

7 янв 2020 в 14:41

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • java
  • spring
  • intellij-idea
  • maven

Создание архетипа 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

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

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

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