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
  2. Kuidas kontrollida
  3. Kokkuvõte

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.

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>

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.