Come controllare i conflitti di libreria in Maven


Data di pubblicazione:20 gennaio 2021.



INFOMARTION > Come controllare i conflitti di libreria in Maven

Panoramica.

Come controllare i conflitti di libreria in Maven. Maven risolve automaticamente le dipendenze della libreria jar, ma la configurazione predefinita non informa sui conflitti. Ecco come controllare i conflitti di libreria in Maven in questi casi.

Indice dei contenuti

  1. Quando si verificano conflitti di libreria in Maven
  2. Come controllare
  3. sintesi

1. Quando si verificano conflitti di libreria in Maven

Maven risolve automaticamente le dipendenze delle librerie Java. La risoluzione automatica delle dipendenze significa che se si ha un file Jar di cui si ha bisogno, si otterrà automaticamente il Jar necessario per eseguirlo. Per ulteriori informazioni sul funzionamento della risoluzione delle dipendenze di librerie specifiche, si veda il seguente articolo.

Come Maven risolve automaticamente le dipendenze delle librerie jar.

Tuttavia, quando si verificano conflitti tra le biblioteche, questi non vengono risolti automaticamente. Inoltre, se non si dispone delle impostazioni, non è nemmeno possibile rilevare un conflitto. Descriviamo come verificare la presenza di conflitti tra le biblioteche.

2. Come controllare

Esistono due modi principali per verificare la presenza di conflitti in biblioteca

  • Introduzione dei plug-in
  • Conferma della pre-costruzione tramite comando.

'Installare i plug-in' è un metodo per aggiungere le impostazioni a pom.xml. 'Check with command before build' significa letteralmente controllare manualmente con un comando prima di costruire. Vorrei spiegarvi come farlo nello specifico.

2-1. Introduzione dei plug-in

I seguenti siti web di Maven possono essere utili.

http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html

Aggiungere le seguenti impostazioni a pom.xml.

pom.xml


<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <id>enforce</id>
            <configuration>
              <rules>
                <dependencyConvergence/>
              </rules>
            </configuration>
            <goals>
              <goal>enforce</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

Se si inseriscono le impostazioni di cui sopra, si verifica il seguente errore e la compilazione fallisce se ci sono conflitti di libreria al momento della compilazione.

[WARNING] 
Dependency convergence error for org.apache.commons:commons-collections4:4.1 paths to dependency are:
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
  +-org.apache.poi:poi:3.17
    +-org.apache.commons:commons-collections4:4.1
and
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
  +-org.apache.commons:commons-collections4:4.0

[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability. See above detailed error message.

Se si applica una build senza plug-in, non si verificano errori e la build termina normalmente. Se si desidera rilevare i conflitti, assicurarsi di impostarlo.

2-2. Conferma della pre-costruzione tramite comando.

Le dipendenze sono controllate dai seguenti comandi

mvn dependency:tree -Dverbose

e, in caso di conflitto, viene visualizzato "omesso per conflitto". È anche possibile restringere l'output solo alle aree in cui ci sono conflitti, come nel comando seguente. ※'find' è il comando per Windows. Per Linux, questo è 'grep'.

mvn dependency:tree -Dverbose | find "omitted for conflict"

I conflitti tra le librerie possono essere verificati osservando i risultati dei comandi precedenti.

3. sintesi

Se si desidera rilevare in modo affidabile i conflitti tra le librerie, si consiglia di "Installare i plug-in". L'introduzione di plug-in assicura che eventuali conflitti vengano notati, in quanto la compilazione fallirà.

Grazie per aver guardato fino alla fine.




■INFORMATION

Fare clic qui per accedere alla pagina superiore di INFORMAZIONI.


■PROFILE

Cliccare qui per un profilo.


■Dettagli di contatto.

Per richieste di informazioni sull'articolo, contattateci qui.