Kā pārbaudīt bibliotēku konfliktus programmā Maven


Publikācijas datums:2021. gada 20. janvāris.



INFOMARTION > Kā pārbaudīt bibliotēku konfliktus programmā Maven

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. Vēlos paskaidrot, 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ā. ※'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.