Come Maven risolve automaticamente le dipendenze dei file JAR


Data di pubblicazione:

Aggiornato:


Articoli > Come Maven risolve automaticamente le dipendenze delle librerie jar.

2026 stato e uso sicuro

Conclusione: Maven non scopre i JAR arbitrari per nome di file. Risolve le coordinate dichiarate, scarica l'artefatto POM, segue che le dipendenze di POM, applica la portata e le regole facoltative, e utilizza la mediazione di dipendenza quando i percorsi multipli richiedono versioni diverse.

Cosa imparerai

  • Come i repository locali, centrali, specchio e privati partecipano alla risoluzione.
  • Perché il POM di una dipendenza, non il JAR stesso, descrive la maggior parte dei requisiti transitori.
  • Come controllare il grafico efficace prima di sovrascrivere una versione.

Destinatari: Gli utenti Maven che vogliono capire da dove vengono scaricati artefatti e perché appaiono librerie extra.

Nota di aggiornamento (2026): Le vecchie coordinate di Apache POI di seguito rimangono utili come esempio storico, non una raccomandazione di versione. Utilizzare le dipendenze supportate attuali, i repository HTTPS di fiducia, i controlli di checksum/signature dove disponibili e una politica di aggiornamento di dipendenza.

Nota di sicurezza: i comandi e gli esempi di configurazione dell'articolo originale non sono stati rieseguiti in un ambiente di produzione moderno. Prima di applicarli, verifica versioni supportate, backup, controlli di accesso e procedura di rollback in un ambiente di prova isolato.

Fonti primarie ufficiali

Panoramica

Maven scarica automaticamente i file JAR e le relative dipendenze dai repository. Questa sezione descrive il meccanismo di risoluzione.

Se POM, artefatti e lifecycle non sono ancora concetti familiari, iniziate dall’introduzione seguente.

Apache Maven: POM, ciclo di vita e dipendenze

Indice dei contenuti

  1. Capacità di Maven di risolvere le dipendenze delle librerie jar.
  2. sintesi

1. Risoluzione delle dipendenze JAR con Maven

È sufficiente dichiarare una dipendenza nel pom.xml: Maven scarica l’artefatto richiesto e le sue dipendenze transitive.

1-1. Cosa includere nel file pom.xml.

Le dipendenze si dichiarano in pom.xml tramite le coordinate Maven. L’esempio seguente richiede Apache POI 3.17, una libreria usata, tra l’altro, per elaborare documenti Microsoft Office.

pom.xml


<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>

Con questa sola dichiarazione Maven recupera "poi-3.17.jar" e le dipendenze transitive necessarie al suo funzionamento.

1-2. Come vengono scaricati da Internet?

Una semplice spiegazione del sistema è illustrata nel diagramma seguente.

Repository Maven.

Maven risolve gli artefatti nei repository configurati. In assenza di altre impostazioni usa Maven Central, disponibile all’indirizzo seguente.

https://repo1.maven.org/maven2/

Se siete interessati, consultate il seguente sito web per un elenco di depositi disponibili su Internet.

https://mvnrepository.com/repos

La prima volta, il jar viene prelevato da un repository esterno, ma viene copiato nel repository locale e non viene prelevato dalla seconda volta in poi. Il percorso del repository locale è "C:\Users\user\.m2".

Se si desidera modificare la destinazione rispetto al valore predefinito, è possibile farlo anche includendo il seguente tag repository in pom.xml.

pom.xml


<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <name>Sonatype Nexus Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
        </snapshots>
    </repository>
</repositories>

1-3. Risoluzione delle dipendenze di un artefatto JAR

Abbiamo appena descritto un esempio di ottenimento di 'poi-3.17.jar', ma 'poi-3.17.jar' richiede 'commons-collections4-4.1.jar' per funzionare. Ciò significa che 'poi-3.17.jar' dipende da 'commons-collections4-4.1.jar'. Il meccanismo per risolvere questa dipendenza si trova nel repository Maven in cui è memorizzato 'poi-3.17.jar'. L'URL è il seguente.

https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/

Nel repository è pubblicato anche "poi-3.17.pom". Maven legge questo POM, rileva la dipendenza da "commons-collections4-4.1.jar" e ripete la risoluzione per gli altri artefatti richiesti. Prima di forzare una versione è opportuno esaminare il grafo risultante.

2. Conclusione

Il POM del progetto dichiara gli artefatti diretti; i POM pubblicati nei repository ne descrivono le dipendenze transitive. Maven risolve il grafo, scarica i file necessari e li conserva nel repository locale.

■INFORMATION

Articoli


■PROFILE

Profilo


■Contatti

Contatti