mvn archetype: generate fornece muitas opções e estou procurando criar um utilitário java simples com casos de teste junit. Gostaria de saber qual arquétipo devo usar aqui?
java
maven
maven-archetype
Jason
fonte
fonte
Respostas:
Quando você faz um
mvn archetype:generate
, uma seleção padrão aparece entre colchetes()
, por exemplo(1274)
, se você rolar para cima para ver o que é # 1274, geralmente é o arquétipo Java padrão para experimentar ou começar, se estiver fazendo projetos Java simples, então é seguro para selecionar.fonte
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
Eu uso dois arquétipos. Depende do tipo de aplicativo que você criará.
Se você quiser um aplicativo da web, use maven-archetype-webapp ou se quiser um aplicativo simples, use maven-archetype-quickstart . Eles são úteis porque você poderá expandi-los sem problemas.
fonte
Estou usando um comando como abaixo:
mvn archetype:generate -Dfilter=org.apache.maven.archetypes:
Vou obter uma pequena lista de achetypes apenas do
org.apache.maven.archetypes
groupId. Os bons para começar émaven-archetype-quickstart
emaven-archetype-webapp
como meus antecessores disseram.fonte
Aqui está o que você precisa
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Referência: Linha de comando do projeto Java Maven Build Run
fonte
Eu acho que você deveria usar
maven-archetype-simple
EDITAR
De acordo com a documentação do maven :
maven-archetype-quickstart
Um arquétipo que contém um projeto Maven de amostra.maven-archetype-simple
Um arquétipo que contém um projeto Maven simples.fonte
maven-archetype-simple
na minha seleção de Eclipse, mas vejomaven-archetype-quickstart
. Eles são os mesmos?pom.xml
manualmente e executar a linha de comando no prompt de comando.Eu começaria com um arquivo pom.xml muito simples que contém apenas o que você precisa. 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
fonte
Você pode usar qualquer um dos básicos do The Practical Developer:
Bibliotecas de teste Java 8 + comumente usadas:
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 teste Java 9 + comumente usadas
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
Eles incluem JUnit 4, Mockito e AssertJ, e um arquivo de manifesto padrão, caso você queira que seu arquivo jar seja executável. Mais informações: https://thepracticaldeveloper.com/archetypes/
Isenção de responsabilidade: eu sou o autor desse blog.
fonte
groupId
, mas para quêarchetypeGroupId
?archetypeArtifactId
.maven-archetype-quickstart Um arquétipo que contém um projeto Maven de amostra. maven-archetype-simple Um arquétipo que contém um projeto Maven simples.
se os erros forem corrigidos adicionando o catálogo de arquétipos do maven ao eclipse. As etapas são fornecidas abaixo:
NOTA: A CONEXÃO COM A INTERNET É NECESSÁRIA DURANTE A CRIAÇÃO DE SEU PRIMEIRO PROJETO MAVEN.
fonte
o número do arquétipo padrão agora é 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (um arquétipo que contém um projeto Maven de amostra).
fonte
Você pode querer considerar o Java Archetype : ele tem padrões razoáveis para iniciar rapidamente um projeto Java seguindo as melhores práticas, incluindo testes JUnit. Eu o concebi como um sucessor moderno de
maven-archetype-quickstart
.Exemplo:
mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false
.Aviso: eu sou o autor.
Para obter mais informações sobre alternativas, aqui está uma parte do README desse projeto (ele fornece mais links do que copiados aqui).
O arquétipo oficial de início rápido
O arquétipo oficial (mencionado pelo Guia de introdução do Maven da Apache e pelo Livro de receitas do Apache Maven) para projetos Java simples é maven-archetype-quickstart ou org.apache.maven.archetypes: maven-archetype-quickstart completo.
Deve, IMHO, ser considerado obsoleto, uma vez que apresenta vários pontos fracos.
Meu arquétipo também fornece registro por padrão, o que eu acho útil, tem melhor escalabilidade do que o sysout e não prejudica, e Guava, que eu acho que enriquece o Java de maneira útil.
Outros arquétipos de início rápido no Maven Central
Para unir esforços, se possível, e evitar duplicações desnecessárias, busquei ativamente outros arquétipos que tivessem o mesmo objetivo que o meu: fornecer um arquétipo simples com padrões razoáveis para iniciar facilmente um projeto Java moderno. (Isso foi feito principalmente por volta de junho de 2020.)
Uma pesquisa geral na internet me levou ao The Practical Developer. Quando contatado, ele escreveu para mim (por e-mail) que não trabalha em seu arquétipo regularmente e, portanto, preferiu recusar a colaboração em tal projeto.
Como as pesquisas na rede não revelaram outros resultados úteis e como não encontrei nenhuma ferramenta de pesquisa especializada adequada às minhas necessidades, implementei um navegador de arquétipo simples. Ele lista todos os arquétipos disponíveis no Maven Central. São muitos para revisar manualmente, portanto, selecionei aqueles cujo groupId e artifactId existiam há pelo menos três anos e foram atualizados durante o último ano, na esperança de encontrar projetos que sejam mantidos a longo prazo, o que suponho indica mais provavelmente um projeto de boa qualidade. (É claro que este filtro pode ter perdido arquétipos de boa qualidade que correspondem perfeitamente à meta declarada; não tenho como saber. Como um caso em questão, esse mesmo arquétipo não passa por esse filtro, pois mudei seu artifactId ao longo do tempo.)
Em seguida, filtrei manualmente a lista resultante com base nas descrições dos arquétipos encontrados em seu POM e dei uma olhada adicional (no site oficial, normalmente) por alguns arquétipos promissores entre eles. Apenas
com.github.ngeor:archetype-quickstart-jdk8
revelou ser um candidato adequado. Mas seu autor escreveu para mim que ele “não está usando / mantendo muito o arquétipo atualmente”.fonte