mvn archetype: generate proporciona demasiadas opciones y estoy buscando crear una utilidad java simple con casos de prueba junit. Me gustaría saber qué arquetipo debería usar aquí.
Respuestas:
Cuando hace a mvn archetype:generate
, aparece una selección predeterminada entre llaves ()
, por ejemplo (1274)
, si se desplaza hacia arriba para ver qué es # 1274, generalmente es el arquetipo predeterminado de Java para probar o comenzar, si está haciendo proyectos simples de Java, también lo es seguro para seleccionar.
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
Utilizo dos arquetipos. Depende del tipo de aplicación que cree.
Si desea una aplicación web, use maven-archetype-webapp , o si desea una aplicación simple, use maven-archetype-quickstart . Son útiles porque podrás ampliarlos sin problemas.
Estoy usando un comando como el siguiente:
mvn archetype:generate -Dfilter=org.apache.maven.archetypes:
Obtendré una lista corta de achetypes solo de org.apache.maven.archetypes
groupId. Los buenos para empezar es maven-archetype-quickstart
y maven-archetype-webapp
como decían mis predecesores.
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Referencia: Línea de comandos del proyecto Build Run Java Maven
Creo que deberías usar maven-archetype-simple
EDITAR
Según la documentación de maven :
maven-archetype-quickstart
Un arquetipo que contiene un proyecto de muestra de Maven.maven-archetype-simple
Un arquetipo que contiene un proyecto Maven simple.maven-archetype-simple
en mi selección de Eclipse, pero veo maven-archetype-quickstart
. ¿Son lo mismo?
pom.xml
manualmente y ejecutar la línea de comando desde el símbolo del sistema.
Comenzaría con un archivo pom.xml muy simple que tiene solo lo que necesita. Algo como
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-module</artifactId>
<version>1</version>
</project>
de http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
Puede utilizar cualquiera de los básicos de 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
Incluyen JUnit 4, Mockito y AssertJ, y un archivo de manifiesto predeterminado en caso de que desee que su archivo jar sea ejecutable. Más información: https://thepracticaldeveloper.com/archetypes/
Descargo de responsabilidad: soy el autor de ese blog.
groupId
, pero ¿ archetypeGroupId
para qué ?
archetypeArtifactId
.
maven-archetype-quickstart Un arquetipo que contiene un proyecto de ejemplo de Maven. maven-archetype-simple Un arquetipo que contiene un proyecto Maven simple.
Si se solucionan los errores, se agrega el catálogo de arquetipos de maven a eclipse. Los pasos se proporcionan a continuación:
Ventana abierta> Preferencias> Maven> Arquetipos
Haga clic
Add Remote Catalog
y agregue lo siguiente:Archivo de catálogo: http://repo1.maven.org/maven2/archetype-catalog.xml
Descripción: catálogo maven
NOTA: SE REQUIERE CONEXIÓN A INTERNET DURANTE LA CREACIÓN DE SU PRIMER PROYECTO MAVEN.
el número de arquetipo predeterminado ahora es 1092 1092: remoto -> org.apache.maven.archetypes: maven-archetype-quickstart (Un arquetipo que contiene un proyecto Maven de muestra).
Es posible que desee considerar Java Archetype : tiene valores predeterminados razonables para iniciar rápidamente un proyecto Java siguiendo las mejores prácticas, incluidas las pruebas JUnit. Lo concebí como un sucesor moderno de maven-archetype-quickstart
.
Ejemplo: mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false
.
Descargo de responsabilidad: soy el autor.
Para obtener más información sobre las alternativas, aquí hay una parte del archivo README de ese proyecto (proporciona más enlaces de los que se copian aquí).
El arquetipo oficial de inicio rápido
El arquetipo oficial (mencionado en Apache's Maven Getting Started Guide y en Apache Maven Cookbook) para proyectos simples de Java es maven-archetype-quickstart u org.apache.maven.archetypes: maven-archetype-quickstart en su totalidad.
Debería, en mi humilde opinión, considerarse obsoleto, ya que sufre varias debilidades.
Mi arquetipo también proporciona registro de forma predeterminada, que creo que es útil, escala mejor que sysout y no duele, y Guava, que creo que enriquece útilmente a Java.
Otros arquetipos de inicio rápido en Maven Central
Para unir esfuerzos si es posible y evitar la duplicación inútil, busqué activamente otros arquetipos que tuvieran el mismo objetivo que el mío: proporcionar un arquetipo simple con valores predeterminados razonables para iniciar fácilmente un proyecto Java moderno. (Esto se hizo principalmente alrededor de junio de 2020).
Una búsqueda general en Internet me llevó a The Practical Developer. Cuando se puso en contacto conmigo, me escribió (por correo electrónico) que no trabaja en su arquetipo con regularidad y, por lo tanto, prefirió negarse a colaborar en dicho proyecto.
Como las búsquedas en la red no revelaron otros resultados útiles, y como no encontré ninguna herramienta de búsqueda especializada que se adaptara a mis necesidades, implementé un navegador arquetipo simple. Enumera todos los arquetipos disponibles en Maven Central. Hay demasiados para revisar manualmente, por lo tanto, seleccioné aquellos cuyo groupId y artifactId existían desde al menos tres años y se han actualizado durante el último año, con la esperanza de encontrar proyectos que se mantengan a largo plazo, lo que supongo indica más probablemente un proyecto de buena calidad. (Por supuesto, este filtro puede haber pasado por alto arquetipos de buena calidad que coinciden perfectamente con el objetivo establecido; no tengo forma de saberlo. Como ejemplo, este mismo arquetipo no pasa ese filtro ya que he cambiado su artifactId con el tiempo).
Luego filtré manualmente la lista resultante sobre la base de las descripciones de arquetipos que se encuentran en su POM, y eché un vistazo más a fondo (en el sitio web oficial, por lo general) para ver algunos arquetipos prometedores entre ellos. Solo se com.github.ngeor:archetype-quickstart-jdk8
reveló que era un candidato adecuado. Pero su autor me escribió que "realmente no está usando / manteniendo mucho el arquetipo en estos días".