Problēmu novēršana Maven atkarību konfliktos ar dependency:tree


Publikācijas datums:

Atjaunināts:


Tehniskie raksti > Problēmu novēršana Maven atkarību konfliktos ar dependency:tree

2026. gada statuss un droša lietošana

Secinājums: palaidiet mvn dependency:tree, lai pārbaudītu atrisināto grafiku, un pēc tam nosakiet, kurš ceļš ieviesa neparedzēto versiju. Apzināti labojiet deklarāciju, izmantojot atjauninātu tiešo atkarību, dependencyManagement vai šauri pamatotu izslēgšanu.

Ko jūs uzzināsiet

  • Kā "tuvākās definīcijas" starpniecība var paslēpt pieprasīto pārejas versiju.
  • Kā detalizēta un filtrēta atkarības koka izvade sašaurina konfliktu.
  • Kāpēc vietējās krātuves failu dzēšana vai nejaušu izslēgšanas gadījumu pievienošana nav ilgstošs risinājums.

Kam tas ir paredzēts: Java izstrādātāji, kas izmeklē saišu kļūdas, neparedzētas klases vai neaizsargātas pārejas versijas.

2026. gada konteksts: spraudņa opcijas atšķiras atkarībā no versijas, tāpēc pārbaudiet pašreizējo atkarības spraudņa dokumentāciju. Pāru diagrammas pārbaude ar organizācijas apstiprinātu programmatūras sastāva analīzes procesu; tīrs koks pats par sevi nepierāda, ka atkarība ir droša.

Drošības piezīme. Sākotnējā rakstā esošās komandas un konfigurācijas piemēri nav atkārtoti izpildīti pašreizējā ražošanas vidē. Pirms to lietošanas pārbaudiet atbalstītās versijas, dublējumus, piekļuves vadīklas un atcelšanas darbības atsevišķā testa vidē.

Galvenie oficiālie avoti

Pārskats.

Kā pārbaudīt bibliotēku konfliktus programmā Maven. Maven automātiski atrisina JAR bibliotēkas atkarības, taču noklusējuma konfigurācija neinformē par konfliktiem. Lūk, kā šādos gadījumos pārbaudīt bibliotēku konfliktus programmā Maven.

Satura rādītājs

  1. Kad Maven sistēmā rodas bibliotēku konflikti
  2. Kā pārbaudīt
  3. kopsavilkums

1. Kad Maven sistēmā rodas bibliotēku konflikti

Maven automātiski atrisina Java bibliotēku atkarības. Automātiska atkarību izšķiršana nozīmē, ka, ja jums ir nepieciešams JAR fails, tas automātiski iegūs JAR, kas nepieciešams, lai palaistu šo Jar. Lai uzzinātu vairāk par to, kā darbojas konkrētu bibliotēku atkarību izšķiršana, skatiet šo rakstu.

Kā Maven automātiski atrisina JAR bibliotēku atkarības.

Tomēr, ja rodas bibliotēku konflikti, tie netiek atrisināti automātiski. Turklāt, ja iestatījumi nav ieviesti, konfliktu pat nevar konstatēt. Mēs vēlamies aprakstīt, kā pārbaudīt, vai bibliotēkā nav konfliktu.

2. Kā pārbaudīt

Ir divi galvenie veidi, kā pārbaudīt, vai bibliotēkā nav konfliktu.

  • Spraudņu pievienojumprogrammu ieviešana
  • Priekšizbūves apstiprinājums ar komandu.

"Instalēt spraudņus" ir iestatījumu pievienošanas metode pom.xml. "Pārbaudīt ar komandu pirms izveides" burtiski nozīmē manuālu pārbaudi ar komandu pirms izveides. Šajā rakstā ir izskaidrots, kā to izdarīt.

2-1. Spraudņu pievienojumprogrammu ieviešana

Šādas Maven vietnes var būt noderīgas.

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

Pievienojiet pom.xml šādus iestatījumus.

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>

Ja ir ievietoti iepriekš minētie iestatījumi, rodas šāda kļūda un kompilēšana neizdodas, ja kompilēšanas laikā ir bibliotēku konflikti.

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

Ja tiek veikta apkopošana bez spraudņiem, kļūdas nerodas un apkopošana tiek pabeigta normāli. Ja vēlaties noteikt konfliktus, pārliecinieties, vai tas ir iestatīts.

2-2. Priekšizbūves apstiprinājums ar komandu.

Atkarības tiek pārbaudītas ar šādām komandām

mvn dependency:tree -Dverbose

un, ja ir konflikts, tiek parādīts "izlaists, lai konstatētu konfliktu". Ir iespējams arī sašaurināt izvades rezultātus, iekļaujot tikai tās jomas, kurās ir konflikti, kā norādīts šajā komandā. Piezīme: 'atrast' ir Windows komanda. Linux sistēmā tas ir 'grep'.

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

Bibliotēku konfliktus var pārbaudīt, apskatot iepriekš minēto komandu rezultātus.

3. kopsavilkums

Ja vēlaties droši noteikt bibliotēku konfliktus, iesakām izmantot iespēju "Instalēt spraudņus". Spraudņu pievienojumprogrammu ieviešana nodrošina, ka visi konflikti tiks pamanīti, jo apkopošana neizdosies.

Paldies, ka noskatījāties līdz beigām.