0Pricing
Java Academy · Lezione

Struttura di un progetto Maven

POM, ciclo di vita e dipendenze

Struttura di un progetto Maven è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.

Struttura di un progetto Maven

Maven è uno strumento di build e un gestore delle dipendenze basato su un unico principio: la convenzione prima della configurazione. Seguendo la struttura standard, la maggior parte degli elementi funziona con una configurazione minima o nulla. In questa lezione verranno illustrate la struttura, il POM e la gestione delle dipendenze.

Struttura standard delle directory

Maven prevede una struttura fissa:

  • src/main/java — codice sorgente di produzione.
  • src/main/resources — risorse di produzione.
  • src/test/java — codice sorgente dei test.
  • target/ — output della build (generato).

Il POM

Il cuore di un progetto Maven è pom.xml, il Project Object Model. Al suo interno vengono dichiarati in XML le coordinate, le dipendenze, i plugin e le impostazioni della build.

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>
</project>

Coordinate: GAV

Ogni artefatto è identificato da groupId, artifactId e version (GAV). Queste coordinate identificano in modo univoco il progetto e ogni dipendenza inclusa.

Dichiarazione delle dipendenze

Le dipendenze vengono elencate all'interno di <dependencies>. Maven le scarica, insieme alle relative dipendenze transitive, da repository come Maven Central e le inserisce in una cache locale.

<dependencies>
  <dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.10.0</version>
    <scope>test</scope>
  </dependency>
</dependencies>

Scope delle dipendenze

Lo scope controlla quando una dipendenza è presente nel classpath:

  • compile — ovunque (impostazione predefinita).
  • provided — solo in fase di compilazione; viene fornita a runtime dal container.
  • runtime — a runtime e durante i test, ma non in compilazione.
  • test — solo per la compilazione e l'esecuzione dei test.

Dipendenze transitive

Se A dipende da B e B dipende da C, Maven rende C disponibile automaticamente: questa è la transitività. In caso di conflitto tra versioni, Maven risolve il conflitto scegliendo la definizione più vicina nell'albero delle dipendenze.

Ciclo di vita della build

Maven definisce un ciclo di vita ordinato composto da fasi. Il ciclo di vita predefinito include, nell'ordine: validate, compile, test, package, verify, install, deploy. L'esecuzione di una fase esegue anche tutte le fasi precedenti.

Comandi comuni

  • mvn compile — compila i sorgenti principali.
  • mvn test — esegue gli unit test.
  • mvn package — crea il JAR/WAR in target/.
  • mvn install — copia l'artefatto nel repository locale, rendendolo disponibile ad altri progetti.

Il repository locale

Gli artefatti scaricati vengono memorizzati nella cache ~/.m2/repository. Le build successive riutilizzano la cache invece di scaricarli nuovamente. mvn install inserisce qui il proprio artefatto, in modo che i progetti dello stesso insieme possano dipendere da esso.

Progetti multi-modulo

Un POM principale con <packaging>pom</packaging> può elencare i moduli figli tramite <modules>. Maven li compila nell'ordine determinato dalle dipendenze, consentendo a un sistema di grandi dimensioni di condividere configurazione e versioni da un unico punto.

Verifica rapida

Verifichi la Sua comprensione della struttura di Maven.

Riepilogo

Ha appreso i fondamenti di Maven:

  • La convenzione prima della configurazione, con la struttura standard src/main/java.
  • Il POM dichiara le coordinate GAV, le dipendenze e i plugin.
  • Gli scope (compile, provided, runtime, test) controllano la visibilità nel classpath.
  • Le dipendenze sono transitive; i conflitti vengono risolti scegliendo la definizione più vicina.
  • Il ciclo di vita ordinato fa sì che una fase esegua tutte le fasi precedenti.

Domande Frequenti

La lezione «Struttura di un progetto Maven» è gratuita?

Sì — il testo completo di «Struttura di un progetto Maven» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.

Cosa imparerò in «Struttura di un progetto Maven»?

POM, ciclo di vita e dipendenze Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Java Academy?

Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Struttura di un progetto Maven»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Java Academy?

Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Struttura di un progetto Maven
  2. Plugin e goal Maven
  3. Basi di Gradle
  4. Scegliere uno strumento di build
← Torna a Java Academy