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