Jak zkontrolovat konflikty knihoven v nástroji Maven


Datum vydání:20. ledna 2021.



INFOMARTION > Jak zkontrolovat konflikty knihoven v nástroji Maven

Přehled.

Jak zkontrolovat konflikty knihoven v nástroji Maven. Maven automaticky řeší závislosti knihovny jar, ale výchozí konfigurace vás o konfliktech neinformuje. V takových případech lze v nástroji Maven zkontrolovat konflikty knihoven.

Obsah

  1. Když se v Mavenu vyskytnou konflikty knihoven
  2. Jak zkontrolovat
  3. shrnutí

1. Když se v Mavenu vyskytnou konflikty knihoven

Maven automaticky řeší závislosti knihoven Java. Automatické řešení závislostí znamená, že pokud máte soubor Jar, který potřebujete, automaticky získá soubor Jar potřebný ke spuštění tohoto souboru Jar. Další informace o tom, jak funguje řešení závislostí konkrétních knihoven, naleznete v následujícím článku.

Jak Maven automaticky řeší závislosti knihoven jar.

Pokud však dojde ke konfliktu knihoven, není vyřešen automaticky. A co víc, pokud nastavení nemáte, nemůžete konflikt ani zjistit. Rádi bychom popsali, jak zkontrolovat konflikty v knihovně.

2. Jak zkontrolovat

Existují dva hlavní způsoby, jak zkontrolovat konflikty v knihovně.

  • Představení zásuvných modulů
  • Potvrzení před sestavením příkazem.

'Instalovat zásuvné moduly' je metoda přidání nastavení do souboru pom.xml. 'Zkontrolovat příkazem před sestavením' doslova znamená ruční kontrolu příkazem před sestavením. Rád bych vám vysvětlil, jak to konkrétně udělat.

2-1. Představení zásuvných modulů

Nápomocné mohou být následující webové stránky Maven.

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

Do souboru pom.xml přidejte následující nastavení.

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>

Pokud jsou vložena výše uvedená nastavení, dojde k následující chybě a sestavení se nezdaří, pokud v době sestavení existují konflikty knihoven.

[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.

Pokud je sestavení použito bez zásuvných modulů, nedojde k žádným chybám a sestavení se normálně ukončí. Pokud chcete detekovat konflikty, nezapomeňte to nastavit.

2-2. Potvrzení před sestavením příkazem.

Závislosti se kontrolují pomocí následujících příkazů

mvn dependency:tree -Dverbose

a v případě konfliktu se zobrazí "vynecháno pro konflikt". Je také možné zúžit výstup pouze na ty oblasti, kde se vyskytují konflikty, jako v následujícím příkazu. ※'find' je příkaz pro systém Windows. V systému Linux je to příkaz 'grep'.

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

Konflikty knihoven lze zkontrolovat na základě výsledků výše uvedených příkazů.

3. shrnutí

Pokud chcete spolehlivě zjistit konflikty knihoven, doporučujeme "Instalovat zásuvné moduly". Zavedením zásuvných modulů zajistíte, že si případných konfliktů všimnete, protože sestavení selže.

Děkujeme, že jste se dívali až do konce.




■INFORMATION

Kliknutím sem přejdete na horní stránku s informacemi.


■PROFILE

Kliknutím sem získáte profil.


■Kontaktní údaje.

V případě dotazů k článku nás prosím kontaktujte zde.