Progetto Descrizione Modello a oggetti

Una delle cose che Maven ha standardizzato in primo luogo è stata la descrizione del progetto. Prima di Maven, ogni IDE aveva il proprio file di progetto, che memorizzava informazioni sul progetto e sul suo assemblaggio (e spesso in forma binaria).

Maven ha ideato uno standard aperto, universale e basato su XML che descrive cos'è un progetto, come dovrebbe essere costruito e quali dipendenze ha utilizzando vari tag. La descrizione del progetto è contenuta in un singolo file, solitamente denominato pom.xml .

Un file pom.xml di esempio :

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

Questo esempio ha tre cose scritte:

  • Le informazioni sulla versione dello standard del progetto Maven sono blu.
  • Le informazioni sul progetto stesso sono in rosso.
  • Le informazioni sulle librerie utilizzate sono in verde.

Diamo un'occhiata più da vicino al dispositivo file pom.

Struttura del progetto Maven

E subito la domanda è: hai prestato attenzione alla stranezza nell'ultimo esempio? Non contiene informazioni sul codice del progetto stesso! Non si sa dove sono archiviati i file java, le risorse, i file delle proprietà, l'html, gli script di build e simili.

E la risposta è semplice: Maven ha standardizzato il design del progetto. Esistono diverse opzioni per organizzare il codice all'interno di un progetto e la più comune è:

La struttura è un po' insolita rispetto ai progetti IDEA standard, ma proprio per questo è universale. Il 90% dei progetti che incontrerai nella tua vita avrà questa struttura di cartelle .

Se crei un progetto Maven (utilizzando IDEA o utilizzando la console), assumerà la forma specificata. Vediamo come funziona tutto qui.

La cartella src , avete indovinato, contiene il codice sorgente del progetto. Ha due sottocartelle: main e test .

La cartella /src/main/java è la radice per tutte le classi Java nel progetto. Se hai una classe com.codegym.Cat, sarà nella cartella /src/main/java /com/codegym /Cat.java . Se sono presenti risorse di testo o binarie, devono essere archiviate nella cartella /src/main/resources .

La struttura della cartella /src/test è simile alla struttura della cartella /src/main , ma contiene i test e le relative risorse. Lo stesso Maven sa come eseguire i test necessari durante la creazione di un progetto, ma ne parleremo in una lezione separata.

C'è anche una cartella /target nel progetto , dove Maven salverà il progetto dopo che è stato costruito. Poiché i progetti di grandi dimensioni hanno spesso script di compilazione non banali, in questa cartella non viene memorizzato nulla.

Il secondo scopo della cartella /target è memorizzare nella cache i risultati di build intermedi. Quando si costruisce un progetto di grandi dimensioni, Maven può ricostruire solo quella parte che è cambiata, accelerando così di parecchie volte il tempo di costruzione.

Bene, come ciliegina sulla torta, alla radice del progetto c'è il file pom.xml. Contiene tutte le informazioni necessarie sul progetto, di cui parleremo di seguito.

Dispositivo pom.xml

Per cominciare, il file pom è xml, quindi contiene le intestazioni standard e le informazioni sugli spazi dei nomi. Si tratta dello standard puramente XML, quindi non ne parleremo in dettaglio. Significa questo:

<?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">

        …

</progetto>

Inoltre, di solito la prima riga all'interno del tag <project> è una descrizione della versione dello standard pom-file. Quasi sempre è 4.0. Anche questo non ci interessa.

Le prime righe che ci interessano assomigliano a questa:

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sample.app</groupId>
  <artifactId>nuova-app</artifactId>
  <version>1.0-SNAPSHOT</version>

Per non capire ancora una volta cosa descriviamo (programma, progetto, modulo, libreria, ecc.) nello standard Maven, tutto questo viene chiamato la parola artefatto . Ciò che non puoi rifiutare ai creatori di Maven è l'amore per la standardizzazione.

I tre tag che vedi significano:

  • groupId - il pacchetto a cui appartiene l'applicazione, con l'aggiunta del nome del dominio;
  • artifactId – chiave stringa univoca (ID progetto);
  • versione - versione del progetto.

Questi tre parametri sono sufficienti per descrivere senza ambiguità qualsiasi artefatto .

Inoltre, dopo la descrizione del progetto, di solito c'è un elenco di artefatti (librerie) utilizzati dal progetto. Assomiglia a questo:

   <dependencies>

       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>

   </dependencies>

In questo esempio, aggiungiamo la libreria commons-io dal pacchetto commons-io, versione 2.6, al nostro progetto.

Al momento della compilazione, Maven troverà tale libreria nel suo repository globale e la aggiungerà al tuo progetto. E a proposito, non solo Maven può farlo.

Come funziona IDEA con Maven

Intellij IDEA è bravissimo a lavorare con Maven. Sa come aprire tali progetti, crearli da sola, eseguire vari script di compilazione e comprende perfettamente le librerie incluse.

Ha anche il suo Maven integrato per qualche tempo, ma devi comunque essere in grado di installarlo e configurarlo da solo, quindi questa funzionalità di IDEA non è stata menzionata in precedenza. In teoria, IDEA può avere un conflitto tra due Maven, quindi è bene che tu sappia che ce ne sono due.

Come creare un nuovo progetto Maven in IDEA:

Fare clic sul menu File > Nuovo progetto. Selezionare la voce di menu Nuovo progetto a sinistra .

progetto esperto

Chiariamo alcuni punti:

  1. Nome del progetto;
  2. Cartella per il progetto;
  3. Il linguaggio del progetto è Java;
  4. Il tipo di progetto è Maven.

Nella sezione Impostazioni avanzate in basso, IDEA ti chiederà di specificare il goupID, l'artifactID e la versione del nostro nuovo progetto. Questi dati possono sempre essere facilmente modificati in seguito. Scegli tra quelli suggeriti o inserisci il tuo:

Progetto Maven 2

Successivamente, crea in modo standard un progetto nella posizione richiesta. Di conseguenza, vediamo la struttura:

Progetto Maven 3

Classi e pacchetti vanno creati nella cartella java, di questo abbiamo già parlato. E penso che tu possa gestirlo facilmente. Siamo pronti ad andare avanti, ma torniamo un po' indietro, a una questione importante che abbiamo "saltato" un po'.