Qual arquétipo escolher para um projeto Java simples


Respostas:


16

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.


esse padrão agora é 333, não 3
TimP

4
é agora380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf

1
Diz eg, não ie, portanto, implica que a seleção padrão é 3.
Oh Chin Boon

2
Agora é 644 org.apache.maven.archetypes:maven-archetype-quickstart:1.1
aliopi,

Agora são 874 :)
miku

74

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.


1
Observe que isso está no plugin do Eclipse por padrão (pelo menos é hoje).
Ben

aqui, vou criar maven-archetype-webapp e baixar o catálogo do maven, mas obtenho um erro.
Mowgli de

O que devo fazer?
Mowgli

19

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.archetypesgroupId. Os bons para começar é maven-archetype-quickstarte maven-archetype-webappcomo meus antecessores disseram.



7

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.

4
Não vejo maven-archetype-simplena minha seleção de Eclipse, mas vejo maven-archetype-quickstart. Eles são os mesmos?
huahsin68 de

Por favor, dê uma olhada na minha edição posterior que se refere à documentação do maven. Em relação ao plugin do eclipse: eu pessoalmente prefiro editar pom.xmlmanualmente e executar a linha de comando no prompt de comando.
AlexR

6

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


12
Embora esse conselho possa ter mérito, ele não responde à pergunta. O objetivo dos arquétipos, pelo que entendi, é salvar o desenvolvedor desse tipo de clichê e tornar mais fácil seguir as práticas recomendadas.
Michael Scheper

3

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.


Eu entendo groupId, mas para quê archetypeGroupId?
lupchiazoem

1
Ele é usado para localizar o arquétipo no repositório Maven, junto com o archetypeArtifactId.
Moisés

0

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:

Abra a janela> Preferências> Maven> Arquétipos

Clique Add Remote Cataloge adicione o seguinte:

Arquivo de catálogo: http://repo1.maven.org/maven2/archetype-catalog.xml

Descrição: catálogo maven

NOTA: A CONEXÃO COM A INTERNET É NECESSÁRIA DURANTE A CRIAÇÃO DE SEU PRIMEIRO PROJETO MAVEN.


baixar o catálogo acima e definir manualmente, mas não funcionou para mim.
Mowgli de

0

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).


0

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.

  • Um problema importante é que ele cria projetos que dependem do JUnit 4. A versão atual, JUnit 5, difere significativamente, fornecendo, entre outros, uma API aprimorada.
  • Pequenos pontos fracos: sua versão padrão é 1.0-SNAPSHOT, que deve ser 1.0.0-SNAPSHOT para seguir o esquema recomendado e usual.
  • Outra pequena fraqueza: ele cria projetos configurados para uma JVM 1.7. Isso pode ser apropriado se você precisar oferecer suporte a instalações antigas, mas optar por uma JVM razoavelmente recente é uma regra padrão mais razoável para novos projetos. Por exemplo, o Java 8 introduziu expressões lambda, que você provavelmente não quer perder.

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-jdk8revelou ser um candidato adequado. Mas seu autor escreveu para mim que ele “não está usando / mantendo muito o arquétipo atualmente”.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.