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í.
java
maven
maven-archetype
Jason
fuente
fuente
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.fuente
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.
fuente
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 esmaven-archetype-quickstart
ymaven-archetype-webapp
como decían mis predecesores.fuente
Esto es lo que necesitas
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
fuente
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.fuente
maven-archetype-simple
en mi selección de Eclipse, pero veomaven-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
fuente
Puede utilizar cualquiera de los básicos de The Practical Developer:
Bibliotecas de prueba de uso común de 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
Bibliotecas de prueba de uso común de 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
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.
fuente
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:
NOTA: SE REQUIERE CONEXIÓN A INTERNET DURANTE LA CREACIÓN DE SU PRIMER PROYECTO MAVEN.
fuente
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).
fuente
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".fuente