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 :

<?xml version="1.0" encoding="UTF-8"?>
<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:

<?xml version="1.0" encoding="UTF-8"?>
<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:

  <modelVersion>4.0.0</modelVersion>

  <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:

   <dependencies>

       <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

Vamos esclarecer alguns pontos:

  1. Nome do Projeto;
  2. Pasta para o projeto;
  3. A linguagem do projeto é Java;
  4. 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

Em seguida, crie um projeto padrão no local necessário. Como resultado, vemos a estrutura:

Projeto Maven 3

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.