> For the complete documentation index, see [llms.txt](https://pauloricmarinho.gitbook.io/desenvolvimento/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pauloricmarinho.gitbook.io/desenvolvimento/java/maven-comandos-basicos.md).

# Apache Maven Framework

Guia de Referência Rápida para Comandos Maven

![](https://750641972-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHGW_meLjEK-3soe8kP%2F-MJXUWY1X3KFlSM8R1ij%2F-MJr3G2biOQfA-e3HPHs%2Fmaven.jpg?alt=media\&token=281dddba-5699-45cc-b7b4-5a532e8b191e)

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](https://750641972-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHGW_meLjEK-3soe8kP%2F-MJr3IYGYvpozk6rOK30%2F-MJr3sA47-tLrOxPBnTU%2Fvarsambiente.png?alt=media\&token=519c4662-fafe-4920-aba6-644ea059002b)

**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`
