mvn архетип: генерує занадто багато опцій, і я прагну створити просту утиліту 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 -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Довідково: Командний рядок проекту Java Maven Build
Я думаю, вам слід скористатися 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's Maven Getting Started Guide і Apache Maven Cookbook) для простих проектів Java є maven-archetype-quickstart, або org.apache.maven.archetypes: maven-archetype-quickstart повністю.
Її, ІМХО, слід вважати застарілою, оскільки вона має кілька слабких сторін.
Мій архетип також забезпечує реєстрацію за замовчуванням, що, на мою думку, є корисним, масштабується краще, ніж sysout, і не шкодить, і Guava, який, на мою думку, корисно збагачує Java.
Інші архетипи швидкого старту в Maven Central
Для того, щоб об'єднати зусилля, якщо це можливо, і уникнути марного дублювання, я активно шукав інші архетипи, які мали б ту ж мету, що і моя: надати простий архетип з розумними значеннями за замовчуванням, щоб легко розпочати сучасний проект Java. (Це в основному було зроблено приблизно в червні 2020 року.)
Загальний пошук в Інтернеті привів мене до «Практичного розробника». Зв’язавшись, він написав мені (електронною поштою), що він не працює над своїм архетипом регулярно, і тому волів відмовитись від співпраці над таким проектом.
Оскільки пошуки в мережі не виявили інших корисних результатів, і оскільки я не знайшов спеціального інструменту пошуку, який би відповідав моїм потребам, я застосував простий браузер архетипів. У ній перераховані всі архетипи, доступні в Maven Central. Існує занадто багато для перегляду вручну, таким чином, я вибрав тих, чиї groupId та артефакті існували принаймні протягом трьох років і були оновлені протягом останнього року, в надії знайти проекти, які підтримуються в довгостроковій перспективі, що, я гадаю, вказує швидше за все, якісний проект. (Звичайно, цей фільтр міг пропустити якісні архетипи, які ідеально відповідають заявленій меті; я не маю можливості цього знати. Як приклад, саме цей архетип не проходить цей фільтр, оскільки я з часом змінив його артефакт).
Потім я відфільтрував вручну отриманий список на основі описів архетипів, знайдених у їхній POM, і надалі (звичайно на офіційному веб-сайті) подивився кілька перспективних архетипів серед них. Тільки com.github.ngeor:archetype-quickstart-jdk8
виявився відповідним кандидатом. Але його автор написав мені, що він "насправді не надто використовує / підтримує архетип сьогодні".