Kuidas kontrollida raamatukogude konflikte Mavenis


Avaldamise kuupäev:20. jaanuar 2021.



INFOMARTION > Kuidas kontrollida raamatukogude konflikte Mavenis

Ülevaade.

Kuidas kontrollida Mavenis raamatukogude konflikte. Maven lahendab jar-raamatukogu 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-raamatukogude 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. Tahaksin selgitada, 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. ※'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.

Aitäh, et vaatasite kuni lõpuni.