Maven sõltuvuste konfliktide veaotsing koos dependency:tree abil
Avaldatud:
Uuendatud:
Artiklid › Maven sõltuvuste konfliktide veaotsing koos dependency:tree abil
Olukord 2026. aastal ja ohutu kasutamine
Järeldus: lahendatud graafiku kontrollimiseks käivitage mvn dependency:tree, seejärel tuvastage, milline tee tõi ootamatu versiooni. Parandage deklaratsioon teadlikult värskendatud otsese sõltuvuse, dependencyManagement või kitsalt põhjendatud välistamise abil.
Mida õpid
- Kuidas lähima deklaratsiooni reegel võib varjata soovitud transitiivset versiooni.
- Kuidas üksikasjalik ja filtreeritud sõltuvuspuu väljund konflikti kitsendab.
- Miks ei ole kohalike hoidlafailide kustutamine või juhuslike välistamiste lisamine püsiv lahendus.
Kellele artikkel on mõeldud: Java-arendajad, kes uurivad linkimisvigu, ootamatuid klasse või haavatavaid transitiivseid versioone.
Olukord 2026. aastal: Plugina valikud erinevad versiooniti, seega vaadake Maven Dependency Plugina kehtivat dokumentatsiooni. Ühendage graafi kontroll organisatsioonis heaks kiidetud tarkvara koostise analüüsiga; puhas sõltuvuspuu ei tõesta iseenesest, et sõltuvus on turvaline.
Ohutusmärkus: Algse artikli käske ja seadistusnäiteid ei ole tänapäevases tootmiskeskkonnas uuesti käivitatud. Enne rakendamist kontrolli toetatud versioone, tee varukoopia ja valmista eraldi testkeskkonnas ette tagasipööramise plaan.
Ametlikud allikad
Ülevaade
Kuidas kontrollida Mavenis raamatukogude konflikte. Maven lahendab JAR-teegi sõltuvused automaatselt, kuid vaikimisi konfiguratsioon ei teavita teid konfliktidest. Niimoodi saab sellistel juhtudel kontrollida Mavenis raamatukogude konflikte.
Sisukord
1. Kui Mavenis tekivad konfliktid raamatukogude vahel
Maven lahendab automaatselt Java raamatukogu sõltuvused. Automaatne sõltuvuste lahendamine tähendab, et kui teil on Jar-fail, mida te vajate, hangib see automaatselt selle Jar'i käivitamiseks vajaliku Jar'i. Lisateavet selle kohta, kuidas konkreetne raamatukogu sõltuvuse lahendamine toimib, leiate järgmisest artiklist.
Kuidas Maven lahendab automaatselt JAR-teekide sõltuvused.
Kui aga raamatukogu konfliktid tekivad, ei lahendata neid automaatselt. Veelgi enam, kui seaded ei ole paigas, ei saa te isegi konflikti tuvastada. Soovime kirjeldada, kuidas kontrollida raamatukogu konflikte.
2. Kuidas kontrollida
Raamatukogu konfliktide kontrollimiseks on kaks peamist viisi
- Pistikprogrammide tutvustamine
- Ehituseelne kinnitus käsu järgi.
'Install plug-ins' on meetod pom.xml-i seadete lisamiseks. 'Kontrollida käsuga enne ehitamist' tähendab sõna otseses mõttes käsitsi kontrollimist käsuga enne ehitamist. Järgnevalt selgitatakse, kuidas seda konkreetselt teha.
2-1. Pistikprogrammide tutvustamine
Järgmised Maveni veebisaidid võivad olla abiks.
http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html
Lisage pom.xml-i järgmised sätted.
<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>
Kui ülaltoodud seaded on sisestatud, ilmneb järgmine viga ja ehitamine ebaõnnestub, kui ehitamise ajal esinevad konfliktid raamatukogude vahel.
[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.
Kui ehitust rakendatakse ilma lisandmooduliteta, ei esine vigu ja ehitamine lõpeb normaalselt. Kui soovite konflikte tuvastada, seadistage see kindlasti.
2-2. Ehituseelne kinnitus käsu järgi.
Sõltuvusi kontrollitakse järgmiste käskudega
mvn dependency:tree -Dverbose
käsk ja konflikti esinemise korral kuvatakse 'jäetud konflikti puhul välja'. Samuti on võimalik kitsendada väljundit ainult nendele aladele, kus esineb konflikte, nagu järgmises käsus. Märkus:'find' on Windowsi käsk. Linuxi puhul on see 'grep'.
mvn dependency:tree -Dverbose | find "omitted for conflict"
Raamatukogu konflikte saab kontrollida, vaadates ülaltoodud käskude tulemusi.
3. kokkuvõte
Kui soovite usaldusväärselt tuvastada raamatukogude konflikte, soovitame kasutada valikut 'Install plug-ins'. Pistikprogrammide kasutuselevõtt tagab, et kõiki konflikte märgatakse, kuna ehitamine ebaõnnestub.
Need on peamised sammud ja piirangud, mida tuleb arvestada.
■Artiklid
■Profiil
■Kontakt