mvn archetype: generate предоставляет слишком много опций, и я хочу создать простую java-утилиту с тестовыми примерами junit. Я хотел бы знать, какой архетип мне здесь следует использовать?
mvn archetype: generate предоставляет слишком много опций, и я хочу создать простую java-утилиту с тестовыми примерами junit. Я хотел бы знать, какой архетип мне здесь следует использовать?
Ответы:
Когда вы выполняете a mvn archetype:generate
, выбор по умолчанию появляется в фигурных скобках ()
, например (1274)
, если вы прокрутите вверх, чтобы увидеть, что такое # 1274, обычно это архетип Java по умолчанию, с которого нужно опробовать или начать, если вы выполняете простые проекты Java, поэтому безопасно выбрать.
380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
org.apache.maven.archetypes:maven-archetype-quickstart:1.1
Я использую два архетипа. Это зависит от того, какое приложение вы создадите.
Если вам нужно веб-приложение, используйте maven-archetype-webapp , а если вам нужно простое приложение, используйте maven-archetype-quickstart . Они полезны, потому что вы без проблем сможете их расширить.
Я использую команду, как показано ниже:
mvn archetype:generate -Dfilter=org.apache.maven.archetypes:
Я получу краткий список типов только от org.apache.maven.archetypes
groupId. Хорошие для пуска , maven-archetype-quickstart
и , maven-archetype-webapp
как и мои предшественники сказал.
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Я думаю, тебе стоит использовать maven-archetype-simple
РЕДАКТИРОВАТЬ
Согласно документации maven :
maven-archetype-quickstart
Архетип, содержащий образец проекта Maven.maven-archetype-simple
Архетип, содержащий простой проект Maven.maven-archetype-simple
в моей подборке Eclipse, но вижу maven-archetype-quickstart
. Они одинаковы?
pom.xml
вручную и запускать командную строку из командной строки.
Я бы начал с очень простого файла pom.xml, в котором есть только то, что вам нужно. Что-то типа
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-module</artifactId>
<version>1</version>
</project>
из http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
Вы можете использовать любой из базовых от The Practical Developer:
mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0
mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0 -Djava-version=9
Они включают JUnit 4, Mockito и AssertJ, а также файл манифеста по умолчанию на случай, если вы хотите, чтобы ваш файл jar был исполняемым. Подробнее: https://thepracticaldeveloper.com/archetypes/
Отказ от ответственности: я автор этого блога.
groupId
, а зачем archetypeGroupId
?
archetypeArtifactId
.
maven-archetype-quickstart Архетип, который содержит образец проекта Maven. maven-archetype-simple Архетип, содержащий простой проект Maven.
если получить ошибки, исправьте это, добавив каталог архетипов maven в eclipse. Шаги приведены ниже:
Откройте окно> Настройки> Maven> Архетипы
Щелкните
Add Remote Catalog
и добавьте следующее:Файл каталога: http://repo1.maven.org/maven2/archetype-catalog.xml
Описание: каталог maven
ПРИМЕЧАНИЕ: ПОДКЛЮЧЕНИЕ К ИНТЕРНЕТУ НЕОБХОДИМО ВО ВРЕМЯ СОЗДАНИЯ ВАШЕГО ПЕРВОГО ПРОЕКТА MAVEN.
номер архетипа по умолчанию теперь 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (архетип, который содержит образец проекта Maven.)
Вы можете рассмотреть Java Archetype : он имеет разумные значения по умолчанию для быстрого запуска Java-проекта в соответствии с лучшими практиками, включая тесты JUnit. Я задумал его как современного преемника maven-archetype-quickstart
.
Пример: mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false
.
Отказ от ответственности: я являюсь автором.
Для получения дополнительной информации об альтернативах, вот часть README этого проекта (он предоставляет больше ссылок, чем скопировано здесь).
Официальный архетип быстрого старта
Официальный архетип (упомянутый в Apache Maven Getting Started Guide и Apache Maven Cookbook) для простых Java-проектов - maven-archetype-quickstart или org.apache.maven.archetypes: maven-archetype-quickstart полностью.
Его следует, IMHO, считать устаревшим, поскольку он имеет несколько недостатков.
Мой архетип также обеспечивает ведение журнала по умолчанию, что, на мой взгляд, полезно, масштабируется лучше, чем sysout, и не причиняет вреда, а также Guava, который, на мой взгляд, полезно обогащает Java.
Другие архетипы быстрого старта в Maven Central
Чтобы по возможности объединить усилия и избежать бесполезного дублирования, я активно искал другие архетипы, которые преследовали бы ту же цель, что и моя: предоставить простой архетип с разумными значениями по умолчанию, чтобы легко начать современный Java-проект. (В основном это было сделано примерно в июне 2020 года.)
Общий поиск в Интернете привел меня к Практическому разработчику. Когда с ним связались, он написал мне (по электронной почте), что не работает над своим архетипом регулярно и поэтому предпочел отказаться от сотрудничества в таком проекте.
Поскольку поиск в сети не дал других полезных результатов, и поскольку я не нашел специализированного инструмента поиска, подходящего для моих нужд, я реализовал простой браузер архетипа. В нем перечислены все архетипы, доступные в Maven Central. Их слишком много для просмотра вручную, поэтому я выбрал те, чьи groupId и artifactId существовали не менее трех лет и обновлялись в течение последнего года, в надежде найти проекты, которые поддерживаются в долгосрочной перспективе, что, как я полагаю, указывает на скорее проект хорошего качества. (Конечно, этот фильтр мог пропустить архетипы хорошего качества, которые полностью соответствуют заявленной цели; у меня нет возможности узнать. В качестве примера, этот самый архетип не проходит этот фильтр, поскольку я со временем менял его artifactId.)
Затем я вручную отфильтровал полученный список на основе описаний архетипов, найденных в их POM, и дополнительно просмотрел (обычно на официальном веб-сайте) несколько многообещающих архетипов среди них. Только com.github.ngeor:archetype-quickstart-jdk8
выяснилось, что это подходящий кандидат. Но его автор написал мне, что он «в настоящее время не особо использует / поддерживает архетип».