Este guia orienta você no uso do Maven para construir um projeto Java simples.
Você criará um aplicativo que fornece a hora do dia e depois o construirá com o Maven.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
Primeiro você precisará configurar um projeto Java para o Maven construir. Para manter o foco no Maven, torne o projeto o mais simples possível por enquanto. Crie esta estrutura em uma pasta de projeto de sua preferência.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_structure_hello.adoc
Dentro do diretório src/main/java/hello
, você pode criar qualquer classe Java que desejar. Para manter a consistência com o restante deste guia, crie estas duas classes: HelloWorld.java
e Greeter.java
.
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
Agora que você tem um projeto pronto para ser construído com o Maven, a próxima etapa é instalar o Maven.
O Maven pode ser baixado como um arquivo zip em https://maven.apache.org/download.cgi. Apenas os binários são necessários, então procure o link para apache-maven- {versão} -bin.zip ou apache-maven- {versão} -bin.tar.gz.
Depois de baixar o arquivo zip, descompacte-o em seu computador. Em seguida, adicione a pasta bin ao seu caminho.
Para testar a instalação do Maven, execute mvn
na linha de comando:
mvn -v
Se tudo correr bem, você deverá receber algumas informações sobre a instalação do Maven. Será semelhante (embora talvez um pouco diferente) ao seguinte:
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) Página inicial do Maven: /home/dsyer/Programs/apache-maven Versão Java: 1.8.0_152, fornecedor: Azul Systems, Inc. Página inicial do Java: /home/dsyer/.sdkman/candidates/java/8u152-zulu/jre Localidade padrão: en_GB, codificação de plataforma: UTF-8 Nome do sistema operacional: "linux", versão: "4.15.0-36-generic", arch: "amd64", família: "unix"
Parabéns! Agora você tem o Maven instalado.
INFO: Você pode considerar o uso do wrapper do Maven para proteger seus desenvolvedores contra ter a versão correta do Maven ou ter que instalá-lo. Os projetos baixados do Spring Initializr possuem o wrapper incluído. Ele aparece como um script mvnw
no nível superior do seu projeto, que você executa no lugar de mvn
.
Agora que o Maven está instalado, você precisa criar uma definição de projeto Maven. Os projetos Maven são definidos com um arquivo XML denominado pom.xml . Entre outras coisas, este arquivo fornece o nome do projeto, a versão e as dependências que ele possui de bibliotecas externas.
Crie um arquivo chamado pom.xml na raiz do projeto (ou seja, coloque-o próximo à pasta src
) e forneça o seguinte conteúdo:
pom.xml
link:initial/pom.xml[role=include]
Com exceção do elemento opcional
, este é o arquivo pom.xml mais simples possível, necessário para construir um projeto Java. Inclui os seguintes detalhes da configuração do projeto:
. Versão do modelo POM (sempre 4.0.0).
. Grupo ou organização à qual o projeto pertence. Freqüentemente expresso como um nome de domínio invertido.
. Nome a ser dado ao artefato da biblioteca do projeto (por exemplo, o nome do seu arquivo JAR ou WAR).
. Versão do projeto que está sendo construído.
- Como o projeto deve ser empacotado. O padrão é "jar" para empacotamento de arquivos JAR. Use "war" para empacotamento de arquivos WAR.
Observação | Quando se trata de escolher um esquema de versionamento, Spring recomenda a abordagem de versionamento semântico. |
Neste ponto você tem um projeto Maven mínimo, mas capaz, definido.
Maven agora está pronto para construir o projeto. Agora você pode executar vários objetivos do ciclo de vida de construção com o Maven, incluindo objetivos para compilar o código do projeto, criar um pacote de biblioteca (como um arquivo JAR) e instalar a biblioteca no repositório de dependência local do Maven.
Para testar a compilação, emita o seguinte na linha de comando:
compilação mvn
Isso executará o Maven, informando-o para executar o objetivo de compilação . Quando terminar, você deverá encontrar os arquivos .class compilados no diretório target/classes .
Como é improvável que você queira distribuir ou trabalhar diretamente com arquivos .class , você provavelmente desejará executar o objetivo do pacote :
pacote mvn
O objetivo do pacote irá compilar seu código Java, executar quaisquer testes e finalizar empacotando o código em um arquivo JAR dentro do diretório de destino . O nome do arquivo JAR será baseado no
e
do projeto. Por exemplo, dado o arquivo pom.xml mínimo anterior, o arquivo JAR será denominado gs-maven-0.1.0.jar .
Para executar o arquivo JAR, execute:
java -jar destino/gs-maven-0.1.0.jar
Observação | Se você alterou o valor de de "jar" para "war", o resultado será um arquivo WAR dentro do diretório de destino em vez de um arquivo JAR. |
O Maven também mantém um repositório de dependências em sua máquina local (geralmente em um diretório .m2/repository em seu diretório inicial) para acesso rápido às dependências do projeto. Se quiser instalar o arquivo JAR do seu projeto nesse repositório local, você deve invocar o objetivo install
:
instalação mvn
O objetivo de instalação irá compilar, testar e empacotar o código do seu projeto e, em seguida, copiá-lo para o repositório de dependência local, pronto para outro projeto referenciá-lo como uma dependência.
Falando em dependências, agora é hora de declarar dependências na compilação do Maven.
O exemplo simples do Hello World é completamente independente e não depende de nenhuma biblioteca adicional. A maioria dos aplicativos, entretanto, depende de bibliotecas externas para lidar com funcionalidades comuns e complexas.
Por exemplo, suponha que além de dizer “Olá, mundo!”, você deseja que o aplicativo imprima a data e a hora atuais. Embora você possa usar os recursos de data e hora nas bibliotecas Java nativas, você pode tornar as coisas mais interessantes usando as bibliotecas Joda Time.
Primeiro, altere HelloWorld.java para ficar assim:
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
Aqui HelloWorld
usa a classe LocalTime
do Joda Time para obter e imprimir a hora atual.
Se você executasse mvn compile
para compilar o projeto agora, a compilação falharia porque você não declarou Joda Time como uma dependência de compilação na compilação. Você pode corrigir isso adicionando as seguintes linhas ao pom.xml (dentro do elemento
):
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
Este bloco de XML declara uma lista de dependências para o projeto. Especificamente, ele declara uma única dependência para a biblioteca Joda Time. Dentro do elemento
, as coordenadas de dependência são definidas por três subelementos:
– O grupo ou organização ao qual a dependência pertence.
– A biblioteca necessária.
- A versão específica da biblioteca necessária.
Por padrão, todas as dependências têm como escopo dependências compile
. Ou seja, eles devem estar disponíveis em tempo de compilação (e se você estiver construindo um arquivo WAR, inclusive na pasta /WEB-INF/libs do WAR). Além disso, você pode especificar um elemento
para especificar um dos seguintes escopos:
provided
- Dependências necessárias para compilar o código do projeto, mas que serão fornecidas em tempo de execução por um contêiner que executa o código (por exemplo, a API Java Servlet).
test
– Dependências usadas para compilar e executar testes, mas não necessárias para construir ou executar o código de tempo de execução do projeto.
Agora, se você executar mvn compile
ou mvn package
, o Maven deverá resolver a dependência do Joda Time do repositório Maven Central e a construção será bem-sucedida.
Primeiro adicione JUnit como dependência ao seu pom.xml, no escopo de teste:
link:complete/pom.xml[role=include]
Em seguida, crie um caso de teste como este:
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
Maven usa um plugin chamado “surefire” para executar testes unitários. A configuração padrão deste plugin compila e executa todas as classes em src/test/java
com um nome correspondente *Test
. Você pode executar os testes na linha de comando assim
teste mvn
ou apenas use a etapa mvn install
como já mostramos acima (há uma definição de ciclo de vida onde "teste" é incluído como um estágio em "instalação").
Aqui está o arquivo pom.xml
completo:
pom.xml
link:complete/pom.xml[role=include]
Observação | O arquivo pom.xml concluído está usando o plug-in Maven Shade para a simples conveniência de tornar o arquivo JAR executável. O foco deste guia é começar a usar o Maven, não usar este plugin específico. |
Parabéns! Você criou uma definição de projeto Maven simples, mas eficaz, para construir projetos Java.
Os seguintes guias também podem ser úteis:
Construindo projetos Java com Gradle
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc