Usando Maven para Gerenciamento de Projetos
Nesta etapa, você aprenderá como usar o Apache Maven para gerenciar seu projeto Java. Maven é uma poderosa ferramenta de automação de construção e gerenciamento de dependências que simplifica a configuração e manutenção do projeto.
Compreendendo o Maven
Maven fornece:
- Estrutura de projeto padrão
- Gerenciamento de dependências
- Automação de construção
- Gerenciamento de informações do projeto
- Processo de construção consistente em todos os projetos
Configurando um Projeto Maven
Vamos criar um novo projeto usando Maven:
- Primeiro, verifique se o Maven está instalado:
mvn --version
Você deve ver uma saída semelhante a esta:
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.18, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-1036-azure", arch: "amd64", family: "unix"
- Navegue até o diretório do seu projeto:
cd /home/labex/project
- Crie um novo projeto Maven usando um archetype (um modelo de projeto):
mvn archetype:generate \
-DgroupId=com.example.calculator \
-DartifactId=simple-calculator \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=1.4 \
-DinteractiveMode=false
Este comando criará um novo projeto com uma estrutura de diretório padrão.
- Examine a estrutura do projeto:
cd simple-calculator
ls -la
Você deve ver uma saída semelhante a:
total 24
drwxr-xr-x 4 labex labex 4096 ... .
drwxr-xr-x 6 labex labex 4096 ... ..
-rw-r--r-- 1 labex labex 174 ... .gitignore
-rw-r--r-- 1 labex labex 720 ... pom.xml
drwxr-xr-x 4 labex labex 4096 ... src
O arquivo chave aqui é pom.xml (Project Object Model), que define a configuração do projeto.
- Examine o layout de diretório padrão do Maven:
find src -type d
Você deve ver:
src
src/main
src/main/java
src/main/java/com
src/main/java/com/example
src/main/java/com/example/calculator
src/test
src/test/java
src/test/java/com
src/test/java/com/example
src/test/java/com/example/calculator
Este é o layout de diretório padrão do Maven:
src/main/java: Código fonte
src/main/resources: Arquivos de recursos
src/test/java: Código de teste
src/test/resources: Recursos de teste
- Vamos olhar para o arquivo
App.java gerado:
cat src/main/java/com/example/calculator/App.java
Você deve ver uma classe simples "Hello World":
package com.example.calculator;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
Aprimorando o Projeto Maven
Vamos aprimorar nosso projeto de calculadora adicionando mais classes:
- Crie um novo arquivo chamado
Calculator.java em src/main/java/com/example/calculator/:
package com.example.calculator;
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
public int multiply(int a, int b) {
return a * b;
}
public double divide(int a, int b) {
if (b == 0) {
throw new ArithmeticException("Cannot divide by zero");
}
return (double) a / b;
}
}
- Agora, modifique o arquivo
App.java existente para usar nossa classe Calculator:
package com.example.calculator;
/**
* Simple Calculator Application
*/
public class App
{
public static void main( String[] args )
{
Calculator calculator = new Calculator();
// Perform some calculations
System.out.println("Addition: 5 + 3 = " + calculator.add(5, 3));
System.out.println("Subtraction: 10 - 4 = " + calculator.subtract(10, 4));
System.out.println("Multiplication: 6 * 7 = " + calculator.multiply(6, 7));
System.out.println("Division: 20 / 4 = " + calculator.divide(20, 4));
System.out.println("Calculator application completed successfully!");
}
}
- Construa o projeto usando Maven:
mvn compile
Você deve ver uma saída terminando com:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
- Empacote a aplicação em um arquivo JAR:
mvn package
Este comando compila seu código, executa testes e empacota a aplicação.
- Execute a aplicação empacotada:
java -cp target/simple-calculator-1.0-SNAPSHOT.jar com.example.calculator.App
Você deve ver a saída:
Addition: 5 + 3 = 8
Subtraction: 10 - 4 = 6
Multiplication: 6 * 7 = 42
Division: 20 / 4 = 5.0
Calculator application completed successfully!
Compreendendo o Arquivo POM do Maven
O arquivo Project Object Model (POM) contém a configuração do projeto. Abra o arquivo pom.xml no editor e examine sua estrutura:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.calculator</groupId>
<artifactId>simple-calculator</artifactId>
<version>1.0-SNAPSHOT</version>
<name>simple-calculator</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- Build configuration... -->
</project>
Elementos chave no arquivo POM:
groupId: Identificador da organização ou projeto
artifactId: Nome do projeto
version: Versão do projeto
dependencies: Bibliotecas externas usadas pelo projeto
build: Configuração para construir o projeto
Comandos Chave do Maven
Aqui estão alguns comandos essenciais do Maven:
mvn compile: Compila o código fonte
mvn test: Executa testes
mvn package: Cria um pacote distribuível (JAR, WAR)
mvn install: Instala o pacote no repositório local
mvn clean: Remove artefatos de construção (diretório target)
mvn clean install: Combinação de clean e install
Maven simplificou drasticamente o gerenciamento de projetos Java, fornecendo convenções, gerenciamento de dependências e automação de construção. Essa abordagem padronizada ajuda os desenvolvedores a se concentrarem na escrita de código, em vez de gerenciar a estrutura do projeto.