# Apache Maven Framework

![](/files/-MJr3G2biOQfA-e3HPHs)

O Maven é uma ferramenta de gerenciamento, construção e implantação de projetos, que tem como função ajudar no processo de gerenciamento de dependências e no de build do projeto, geração de relatórios e de documentação.

&#x20;**Download do Framework**

O framework está disponível na página oficial da ferramenta: <http://maven.apache.org/>.

#### CONFIGURAÇÃO DO MAVEN

**Variáveis de Ambiente do Maven**

![Variáveis de Ambiente do Maven](/files/-MJr3sA47-tLrOxPBnTU)

**Variáveis de Usuários**

**JAVA\_HOME** = C:\Program Files\Java\jdk1.7.0\_45

**CLASS\_PATH**= C:\Program Files\Java\jdk1.7.0\_45\bin\lib

**M2\_HOME** = C:\Program Files\apache-maven-3.1.1

**M2\_REPO** = C:\Users\ppontes\\.m2\repository

**MAVEN\_OPTS** = -Xmx1024m -Xmx512m -XX:MaxPermSize=128m -Djava.awt.headless=true

**Variáveis de Sistema**

**Path** – C:\Program Files\apache-maven-3.1.1\bin

&#x20;**Descrição das Variáveis de Ambiente**

| **M2\_HOME**    | Home de instalação do Maven                  |
| --------------- | -------------------------------------------- |
| **M2\_REPO**    | Repositório das Bibliotecas                  |
| **MAVEN\_OPTS** | Configurações de Memória do                  |
| **Path**        | Variáveis de Ambiente do Sistema Operacional |
| **JAVA\_HOME**  | Home de instalação da JDK                    |
| **CLASS\_PATH** | Classpath com as libs da JDK                 |

**Comandos Básicos do MAVEN**

Visando facilitar você que está começando a usar o Maven segue uma lista com algumas dicas muito úteis que irão ajudar o início desta longa e grande viagem sem volta!

***1)*** A melhor forma de iniciar um projeto Maven é através de templates já prontos para uso.

***2)*** Existe uma lista de comandos básicos no Maven. Faça alguns testes e entenda na prática como funciona cada um deles. Veja o que acontece na pasta target do seu projeto. Seguem os comandos:

* **mvn compile**
* **mvn jar:jar**
* **mvn test**
* **mvn package**
* **mvn install**
* **mvn eclipse:eclipse**
* **mvn package**
* **mvn clean**

***3)*** Pular os testes( isto é muito importante mas… quem sabe você não precise testar no momento, não é?)

```bash
mvn <comando> -Dmaven.test.skip=true
```

***4)*** Crie profiles de execução:

```bash
mvn <comando> -P desenvolvimento
```

O exemplo abaixo explica como usar 2 tipos diferentes de profiles: tomcat e jboss:

```bash
mvn <comando> -P tomcat
```

```bash
mvn <comando> -P jboss
```

Caso seja necessário é possível executar dois profiles de uma só vez:

```bash
mvn –P profile1 –P profile2
```

Agora, um exemplo para criação de um projeto web com o conteúdo aberto **(war:exploded)**:

```bash
mvn clean package war:exploded -P tomcat
```

**Acesse o link para mais informações sobre profiles:** <http://maven.apache.org/guides/introduction/introduction-to-profiles.html>

***5)*** Instale qualquer arquivo no repositório local Imagine que você precise criar um arquivo jar e este será compartilhado entre seus vários projetos. Você pode instalar qualquer jar que quiser, mesmo não sendo do projeto maven **(como no exemplo abaixo)**:

```bash
mvn install:install-file -DgroupId=toplink 
-DartifactId=toplink-essentials -Dversion=2.7 
-Dpackaging=jar -Dfile=toplink-essentials.jar
```

#### *Guia de Referência Rápida para Comandos Maven*

O Maven possui uma vasta lista de comandos para facilitar a sua vida e a minha também imaginei: por que não criar uma página de referência com os principais comandos existentes? Assim podemos acessá-la sempre que for necessário para lembrar de alguns comandos até que todos estejam “decorados”.\
Espero que seja útil e que estejam todos funcionando em seus computadores.

**Para compilar**

`mvn compile`

**Para compilar off-line**

`mvn –o compile`

**Para criar os pacotes**

`mvn package`

**Instalar o pacote nos respectivos repositórios**

`mvn install`

**Limpar a pasta target**

`mvn clean`

**Gerar um projeto eclipse(normalmente prefiro recriar)**

`mvn eclipse:clean eclipse:eclipse`

**Gerar um projeto eclipse baixando os códigos-fonte das dependências**

`mvn eclipse:clean eclipse:eclipse –DdownloadSources=true`

**Gerar um projeto eclipse baixando os códigos-fonte assim como o javadoc das dependências**

`mvn eclipse:clean eclipse:eclipse –DdownloadSources=true –DdownloadJavadocs=true`

**Executar os testes unitários**

`mvn test`

**Executar os testes unitários apenas informando no console os resultados dos testes**

`mvn -Dsurefire.useFile=false test`

**Executar um teste específico**

`mvn test –Dtest=br.com.maven3.tutorial.tests.suaClasseDeTestes`

**Ignorar os testes ao gerar um pacote**

`mvn package -Dmaven.test.skip=true`

**Ignorar os testes ao instalar um pacote**

`mvn install -Dmaven.test.skip=true`

**Gerar um projeto web baseado em um template(Leia mais sobre templates em Dicas para usar templates de projetos pré-configurados no Maven – Maven Archetypes)**

`mvn archetype:create -DgroupId=br.com.projeto.exemplo -DartifactId=projeto-web -DarchetypeArtifactId=maven-archetype-webapp`

**Gerar site de documentação para o projeto**

`mvn site`

**Gerar Javadoc**

`mvn javadoc:javadoc`

**Para ver qual é o pom.xml que o Maven entende(veja o link Qual é a estrutura padrão de diretórios e arquivos no Maven?)**

`mvn help:effective-pom`

**Como executar um profile**

`mvn –P profile1`

**Como executar 2 profiles**

`mvn –P profile1 –P profile2`

**Como ignorar um profile e executar outro profile**

`mvn –P !profile1 –P profile2`

**Como recriar um projeto web aberto na pasta target**

`mvn clean package war:exploded`

**Como executar o Sonar(Aprenda mais sobre o Sonar em Aprenda como melhorar a qualidade do código usando o Sonar)**

`mvn sonar:sonar`

**Exibir todas as dependências e dependências transitivas, ajudando a identificar conflitos;**

`mvn dependency:tree`

**Exibir todas as dependências transitivas para um pacote, ajudando a identificar conflitos;**

`mvn -X <nome_pacote>`

**Fazer download dos códigos fontes independentes de IDE**

`mvn dependency:sources`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://pauloricmarinho.gitbook.io/desenvolvimento/java/maven-comandos-basicos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
