Який архетип вибрати для простого Java-проекту


89

mvn архетип: генерує занадто багато опцій, і я прагну створити просту утиліту java з тестовими кейсами junit. Я хотів би знати, який архетип я повинен тут використовувати?


Рекомендую прочитати Посібник із початку роботи Maven . Він короткий і охоплює багато землі.
Sahil Muthoo

Відповіді:


16

Коли ви робите a mvn archetype:generate, виділений за замовчуванням вибір з’являється у фігурних дужках (), наприклад (1274), якщо ви прокручуєте вгору, щоб побачити, що таке # 1274, зазвичай це архетип Java за замовчуванням, який потрібно спробувати або почати, якщо ви робите прості проекти Java, так це безпечний для вибору.


що за замовчуванням зараз 333, а не 3
TimP

4
зараз380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf

1
Там написано, наприклад, не тобто, отже, це означає, що за замовчуванням вибрано 3.
О Чін Бун

2
Зараз 644 org.apache.maven.archetypes:maven-archetype-quickstart:1.1
Аліопі,

Зараз 874 :)
miku

74

Я використовую два архетипи. Це залежить від того, який додаток ви створите.

Якщо ви хочете веб-програму, використовуйте maven-archetype-webapp , або якщо ви хочете просту програму, використовуйте maven-archetype-quickstart . Вони корисні, оскільки ви зможете без проблем їх розширити.


1
Зауважте, що це за замовчуванням у плагіні Eclipse (принаймні, це сьогодні).
Бен

тут я збираюся створити maven-archetype-webapp і завантажити каталог maven, але отримую помилку.
Мауглі

що я повинен зробити?
Мауглі

19

Я використовую команду, як показано нижче:

mvn archetype:generate -Dfilter=org.apache.maven.archetypes:

Я отримаю короткий список ахетипів лише від org.apache.maven.archetypesgroupId. Хороші для початку - це, як maven-archetype-quickstartі maven-archetype-webappмої попередники.



7

Я думаю, вам слід скористатися maven-archetype-simple

РЕДАГУВАТИ

Згідно з документацією maven :

  • maven-archetype-quickstart Архетип, який містить зразок проекту Maven.
  • maven-archetype-simple Архетип, який містить простий проект Maven.

4
Я не бачу maven-archetype-simpleу своєму виборі Eclipse, але бачу maven-archetype-quickstart. Вони однакові?
huahsin68

Будь ласка, погляньте на мою подальшу редакцію, яка стосується документації maven. Щодо плагіна eclipse: Я особисто вважаю за краще редагувати pom.xmlвручну та запускати командний рядок із командного рядка.
AlexR

6

Я б розпочав з дуже простого файлу 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


12
Хоча ця порада може бути гідною, вона не відповідає на питання. Вся суть архетипів, наскільки я розумію, полягає в тому, щоб врятувати розробника від такого типу шаблонів і спростити дотримання найкращих практик.
Michael Scheper

3

Ви можете використовувати будь-який з основних з The Practical Developer:

Загальновживані тестові бібліотеки Java 8 +:

mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0

Загальновживані тестові бібліотеки Java 9 +

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?
lupchiazoem

1
Він використовується для пошуку архетипу у сховищі Maven разом із archetypeArtifactId.
Moisés

0

maven-archetype-quickstart Архетип, який містить зразок проекту Maven. maven-archetype-simple Архетип, який містить простий проект Maven.

якщо помилки виправляються, додайте каталог архетипів maven до eclipse. Кроки наведені нижче:

Відкрийте вікно> Налаштування> Maven> Архетипи

Клацніть Add Remote Catalogта додайте наступне:

Файл каталогу: http://repo1.maven.org/maven2/archetype-catalog.xml

Опис: каталог maven

ПРИМІТКА: ПІДКЛЮЧЕННЯ ДО ІНТЕРНЕТУ ПОТРІБНО ПІД ЧАС СТВОРЕННЯ ВАШОГО ПЕРШОГО ПРОЕКТУ MAVEN.


завантажуючи вищезазначений каталог і встановлюючи вручну, але не працював у мене.
Мауглі

0

типовим номером архетипу за замовчуванням зараз є 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (Архетип, який містить зразок проекту Maven.)


0

Можливо, ви захочете розглянути 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 повністю.

Її, ІМХО, слід вважати застарілою, оскільки вона має кілька слабких сторін.

  • Важливою проблемою є те, що він створює проекти, які залежать від JUnit 4. Поточна версія, JUnit 5, значно відрізняється, забезпечуючи серед іншого вдосконалений API.
  • Незначні слабкі сторони: його версія за замовчуванням 1.0-SNAPSHOT, яка повинна бути 1.0.0-SNAPSHOT, щоб слідувати рекомендованій та звичайній схемі.
  • Ще одна незначна слабкість: він створює проекти, налаштовані на 1.7 JVM. Це може бути доречним, якщо вам особливо потрібна підтримка старих інсталяцій, але вибір розумно недавнього JVM є більш розумним правилом за замовчуванням для нових проектів. Наприклад, Java 8 представила лямбда-вирази, які ви, мабуть, не хочете пропустити.

Мій архетип також забезпечує реєстрацію за замовчуванням, що, на мою думку, є корисним, масштабується краще, ніж sysout, і не шкодить, і Guava, який, на мою думку, корисно збагачує Java.

Інші архетипи швидкого старту в Maven Central

Для того, щоб об'єднати зусилля, якщо це можливо, і уникнути марного дублювання, я активно шукав інші архетипи, які мали б ту ж мету, що і моя: надати простий архетип з розумними значеннями за замовчуванням, щоб легко розпочати сучасний проект Java. (Це в основному було зроблено приблизно в червні 2020 року.)

Загальний пошук в Інтернеті привів мене до «Практичного розробника». Зв’язавшись, він написав мені (електронною поштою), що він не працює над своїм архетипом регулярно, і тому волів відмовитись від співпраці над таким проектом.

Оскільки пошуки в мережі не виявили інших корисних результатів, і оскільки я не знайшов спеціального інструменту пошуку, який би відповідав моїм потребам, я застосував простий браузер архетипів. У ній перераховані всі архетипи, доступні в Maven Central. Існує занадто багато для перегляду вручну, таким чином, я вибрав тих, чиї groupId та артефакті існували принаймні протягом трьох років і були оновлені протягом останнього року, в надії знайти проекти, які підтримуються в довгостроковій перспективі, що, я гадаю, вказує швидше за все, якісний проект. (Звичайно, цей фільтр міг пропустити якісні архетипи, які ідеально відповідають заявленій меті; я не маю можливості цього знати. Як приклад, саме цей архетип не проходить цей фільтр, оскільки я з часом змінив його артефакт).

Потім я відфільтрував вручну отриманий список на основі описів архетипів, знайдених у їхній POM, і надалі (звичайно на офіційному веб-сайті) подивився кілька перспективних архетипів серед них. Тільки com.github.ngeor:archetype-quickstart-jdk8виявився відповідним кандидатом. Але його автор написав мені, що він "насправді не надто використовує / підтримує архетип сьогодні".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.