archetype mvn: generowanie zapewnia o wiele za dużo opcji, a ja szukam prostego narzędzia java z przypadkami testowymi junit. Chciałbym wiedzieć, jakiego archetypu powinienem tu użyć?
java
maven
maven-archetype
Jason
źródło
źródło
Odpowiedzi:
Kiedy robisz a
mvn archetype:generate
, domyślny wybór pojawia się w otaczających nawiasach klamrowych()
, np.(1274)
Jeśli przewiniesz w górę, aby zobaczyć, co to jest # 1274, jest to zwykle domyślny archetyp Javy do wypróbowania lub rozpoczęcia, jeśli robisz proste projekty Java. bezpieczny do wyboru.źródło
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
Używam dwóch archetypów. To zależy od tego, jaką aplikację utworzysz.
Jeśli potrzebujesz aplikacji internetowej, użyj maven-archetype-webapp , a jeśli potrzebujesz prostej aplikacji, użyj maven-archetype-quickstart . Są przydatne, ponieważ bez problemu je rozbudujesz.
źródło
Używam polecenia jak poniżej:
mvn archetype:generate -Dfilter=org.apache.maven.archetypes:
Będę uzyskać krótką listę z achetypes tylko z
org.apache.maven.archetypes
GroupID. Te dobre na start sąmaven-archetype-quickstart
imaven-archetype-webapp
tak jak mówili moi poprzednicy.źródło
Oto, czego potrzebujesz
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Odniesienie: Build Run Java Maven Project Command Line
źródło
Myślę, że powinieneś użyć
maven-archetype-simple
EDYTOWAĆ
Według dokumentacji maven :
maven-archetype-quickstart
Archetyp zawierający przykładowy projekt Mavena.maven-archetype-simple
Archetyp zawierający prosty projekt Mavena.źródło
maven-archetype-simple
w moim wyborze Eclipse, ale widzęmaven-archetype-quickstart
. Czy oni są tacy sami?pom.xml
ręcznie i uruchamiać wiersz poleceń z wiersza poleceń.Zacząłbym od bardzo prostego pliku pom.xml, który zawiera tylko to, czego potrzebujesz. Coś jak
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-module</artifactId> <version>1</version> </project>
z http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
źródło
Możesz użyć dowolnego z podstawowych z The Practical Developer:
Często używane biblioteki testowe 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
Często używane biblioteki testowe 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
Obejmują one JUnit 4, Mockito i AssertJ oraz domyślny plik manifestu na wypadek, gdybyś chciał, aby plik jar był wykonywalny. Więcej informacji: https://thepracticaldeveloper.com/archetypes/
Zastrzeżenie: jestem autorem tego bloga.
źródło
groupId
, ale po coarchetypeGroupId
?archetypeArtifactId
.maven-archetype-quickstart Archetyp zawierający przykładowy projekt Mavena. maven-archetype-simple Archetyp zawierający prosty projekt Mavena.
jeśli get błędy naprawiono, dodając katalog archetypów mavena do Eclipse. Kroki podano poniżej:
UWAGA: PODCZAS TWORZENIA PIERWSZEGO PIERWSZEGO PROJEKTU WYMAGANE JEST POŁĄCZENIE Z INTERNETEM.
źródło
domyślny numer archetypu to teraz 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (archetyp zawierający przykładowy projekt Mavena).
źródło
Możesz rozważyć archetyp Java : ma rozsądne wartości domyślne do szybkiego uruchamiania projektu Java zgodnie z najlepszymi praktykami, w tym testami JUnit. Pomyślałem, że to nowoczesny następca
maven-archetype-quickstart
.Przykład:
mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false
.Zastrzeżenie: jestem autorem.
Aby uzyskać więcej informacji na temat alternatyw, oto część pliku README tego projektu (zawiera więcej linków niż skopiowanych tutaj).
Oficjalny archetyp szybkiego startu
Oficjalnym archetypem (wspomnianym w Apache's Maven Getting Started Guide i Apache Maven Cookbook) dla prostych projektów Java jest maven-archetype-quickstart lub org.apache.maven.archetypes: maven-archetype-quickstart w całości.
Powinien, IMHO, zostać uznany za przestarzały, ponieważ ma kilka słabych punktów.
Mój archetyp zapewnia również domyślne logowanie, co moim zdaniem jest przydatne, skaluje się lepiej niż sysout i nie boli, oraz guawa, która moim zdaniem pożytecznie wzbogaca Javę.
Inne archetypy szybkiego startu w Maven Central
Aby w miarę możliwości połączyć wysiłki i uniknąć niepotrzebnego powielania, aktywnie szukałem innych archetypów, które miałyby ten sam cel co mój: zapewnić prosty archetyp z rozsądnymi domyślnymi ustawieniami, aby łatwo rozpocząć nowoczesny projekt Java. (Zrobiono to głównie około czerwca 2020 r.)
Ogólne wyszukiwanie w Internecie doprowadziło mnie do The Practical Developer. Kiedy się skontaktowałem, napisał do mnie (przez e-mail), że nie pracuje regularnie nad swoim archetypem i dlatego wolał odmówić współpracy przy takim projekcie.
Ponieważ wyszukiwania w sieci nie przyniosły innych przydatnych wyników, a nie znalazłem specjalistycznej wyszukiwarki odpowiadającej moim potrzebom, zaimplementowałem prostą przeglądarkę archetypów. Zawiera listę wszystkich archetypów dostępnych w Maven Central. Jest ich zbyt wiele, aby przejrzeć je ręcznie, dlatego wybrałem te, których groupId i artifactId istniały od co najmniej trzech lat i zostały zaktualizowane w ciągu ostatniego roku, w nadziei znalezienia projektów, które będą utrzymywane w dłuższej perspektywie, co, jak przypuszczam, wskazuje raczej projekt dobrej jakości. (Oczywiście ten filtr mógł przeoczyć archetypy dobrej jakości, które idealnie pasują do określonego celu; nie mam sposobu, aby wiedzieć. Przykładowo, ten sam archetyp nie przechodzi przez ten filtr, ponieważ z czasem zmieniłem jego artefaktId).
Następnie ręcznie przefiltrowałem wynikową listę na podstawie opisów archetypów znalezionych w ich POM i przyjrzałem się (zazwyczaj na oficjalnej stronie internetowej) kilku obiecującym archetypom spośród nich. Tylko
com.github.ngeor:archetype-quickstart-jdk8
okazuje się być odpowiednim kandydatem. Ale jego autor napisał do mnie, że „obecnie nie używa / nie utrzymuje zbyt często archetypu”.źródło