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 é:
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 .
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:
Em seguida, crie um projeto padrão no local necessário. Como resultado, vemos a estrutura:
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.
GO TO FULL VERSION