Modelo de objeto de descrição do projeto
Uma das coisas que Maven padronizou em primeiro lugar foi a descrição do projeto. Antes do Maven, cada IDE tinha seu próprio arquivo de projeto, que armazenava informações sobre o projeto e sua montagem (muitas vezes em formato binário).
O Maven criou um padrão aberto, universal e baseado em XML que descreve o que é um projeto, como ele deve ser criado e quais dependências ele possui usando várias tags. A descrição do projeto está contida em um único arquivo, geralmente denominado pom.xml .
Um exemplo de arquivo pom.xml :
<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>example.com</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>commons-io </groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</project>
Este exemplo tem três coisas escritas:
- As informações sobre a versão do padrão do projeto maven estão em azul.
- As informações sobre o projeto em si estão em vermelho.
- As informações sobre as bibliotecas usadas são verdes.
Vamos dar uma olhada no dispositivo de arquivo pom.
Estrutura do projeto Maven
E imediatamente a pergunta é: você prestou atenção na estranheza do último exemplo? Ele não contém informações sobre o próprio código do projeto! Não há nenhuma palavra sobre onde os arquivos java, recursos, arquivos de propriedades, html, scripts de construção e similares são armazenados.
E a resposta é simples - Maven padronizou o design do projeto. Existem várias opções para organizar o código dentro de um projeto, e a mais comum é:
![](https://cdn.codegym.cc/images/article/1fcd876d-df8f-4ea6-b5de-b671582da78e/512.jpeg)
A estrutura é um pouco incomum depois dos projetos padrão do IDEA, mas por isso é universal. 90% dos projetos que você encontrará em sua vida terão essa estrutura de pastas .
Se você criar um projeto Maven (usando o IDEA ou o console), ele terá o formato especificado. Vamos ver como tudo funciona aqui.
A pasta src , você adivinhou, contém o código-fonte do projeto. Ele tem duas subpastas: main e test .
A pasta /src/main/java é a raiz de todas as classes Java no projeto. Se você tiver uma classe com.codegym.Cat, ela estará na pasta /src/main/java /com/codegym /Cat.java . Se houver recursos de texto ou binários, eles devem ser armazenados na pasta /src/main/resources .
A estrutura da pasta /src/test é semelhante à estrutura da pasta /src/main , mas contém os testes e seus recursos. O próprio Maven sabe como executar os testes necessários na hora de construir um projeto, mas falaremos sobre isso em uma aula separada.
Há também uma pasta /target no projeto , onde o Maven salvará o projeto depois que ele for compilado. Como projetos grandes geralmente possuem scripts de construção não triviais, nada é armazenado nesta pasta.
A segunda finalidade da pasta /target é armazenar em cache os resultados intermediários da compilação. Ao construir um projeto grande, o Maven só pode reconstruir a parte dele que foi alterada, acelerando assim o tempo de construção várias vezes.
Bem, como cereja do bolo - na raiz do projeto está o arquivo pom.xml. Ele contém todas as informações necessárias sobre o projeto, que discutiremos a seguir.
Dispositivo pom.xml
Para começar, o arquivo pom é xml, portanto contém os cabeçalhos padrão e as informações de namespaces. Isso é tudo sobre o padrão puramente XML, então não vamos falar sobre isso em detalhes. Significa isto:
<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">
…
</projeto>
Além disso, geralmente a primeira linha dentro da tag <project> é uma descrição da versão do padrão do arquivo pom. Quase sempre é 4.0. Isso também não nos interessa.
As primeiras linhas que nos interessam são assim:
<groupId>com.sample.app</groupId>
<artifactId>new-app</artifactId>
<version>1.0-SNAPSHOT</version>
Para não entender mais uma vez o que descrevemos (programa, projeto, módulo, biblioteca, etc.) no padrão Maven, tudo isso é chamado de palavra artefato . O que você não pode recusar aos criadores do Maven é o amor pela padronização.
As três tags que você vê significam:
- groupId - o pacote ao qual pertence o aplicativo, com a adição do nome de domínio;
- artefatoId – chave de string exclusiva (id do projeto);
- versão - versão do projeto.
Esses três parâmetros são suficientes para descrever inequivocamente qualquer artefato .
Além disso, após a descrição do projeto, geralmente há uma lista de artefatos (bibliotecas) que o projeto utiliza. Parece algo assim:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
Neste exemplo, adicionamos a biblioteca commons-io do pacote commons-io, versão 2.6, ao nosso projeto.
No momento da compilação, o Maven encontrará essa biblioteca em seu repositório global e a adicionará ao seu projeto. E, a propósito, não apenas Maven pode fazer isso.
Como o IDEA funciona com o Maven
O Intellij IDEA é ótimo para trabalhar com o Maven. Ela sabe como abrir esses projetos, criá-los ela mesma, executar vários scripts de construção e entender perfeitamente as bibliotecas incluídas.
Ele ainda possui seu próprio Maven integrado por algum tempo, mas você ainda precisa ser capaz de instalá-lo e configurá-lo, portanto, esse recurso do IDEA não foi mencionado anteriormente. Em teoria, o IDEA pode ter um conflito entre dois Mavens, então é bom você saber que existem dois.
Como criar um novo projeto Maven no IDEA:
Clique no menu Arquivos > Novo Projeto. Selecione o item de menu Novo projeto à esquerda .
![projeto maven](https://cdn.codegym.cc/images/article/031564fb-d0de-439c-a134-22347e7b3c6b/800.jpeg)
Vamos esclarecer alguns pontos:
- Nome do Projeto;
- Pasta para o projeto;
- A linguagem do projeto é Java;
- O tipo de projeto é Maven.
Na seção Configurações avançadas na parte inferior, o IDEA solicitará que você especifique o goupID, o artefatoID e a versão de nosso novo projeto. Esses dados sempre podem ser facilmente alterados posteriormente. Escolha entre os sugeridos ou insira o seu próprio:
![Projeto Maven 2](https://cdn.codegym.cc/images/article/146b77c0-fce6-4a8f-9e18-d1426a336762/512.jpeg)
Em seguida, crie um projeto padrão no local necessário. Como resultado, vemos a estrutura:
![Projeto Maven 3](https://cdn.codegym.cc/images/article/f96079a3-3b41-40dc-9924-9308298ceb17/512.jpeg)
Classes e pacotes devem ser criados na pasta java, já falamos sobre isso. E eu acho que você pode facilmente lidar com isso. Estamos prontos para seguir em frente, mas vamos voltar um pouco, para uma questão importante que "pulamos" um pouco.