Kirjastoristiriitojen tarkistaminen Mavenissa


Julkaisupäivä:20. tammikuuta 2021.



INFOMARTION > Kirjastoristiriitojen tarkistaminen Mavenissa

Yleiskatsaus.

Kirjastoristiriitojen tarkistaminen Mavenissa. Maven ratkaisee jar-kirjaston riippuvuudet automaattisesti, mutta oletusasetukset eivät ilmoita ristiriidoista. Näin tarkistat kirjastoristiriidat Mavenissa tällaisissa tapauksissa.

Sisällysluettelo

  1. Kun Mavenissa esiintyy kirjastoristiriitoja
  2. Kuinka tarkistaa
  3. yhteenveto

1. Kun Mavenissa esiintyy kirjastoristiriitoja

Maven ratkaisee Java-kirjastoriippuvuudet automaattisesti. Automaattinen riippuvuusratkaisu tarkoittaa, että jos sinulla on Jar-tiedosto, jota tarvitset, se hakee automaattisesti Jar-tiedoston, jota tarvitaan kyseisen Jar-tiedoston suorittamiseen. Lisätietoja siitä, miten kirjastokohtaisten riippuvuuksien ratkaiseminen toimii, on seuraavassa artikkelissa.

Miten Maven ratkaisee automaattisesti jar-kirjastojen riippuvuudet.

Kirjastoristiriitoja ei kuitenkaan ratkaista automaattisesti. Jos asetuksia ei ole käytössä, et voi edes havaita ristiriitaa. Haluamme kuvata, miten kirjastojen ristiriidat voidaan tarkistaa.

2. Kuinka tarkistaa

Kirjastoristiriitojen tarkistamiseen on kaksi päätapaa

  • Lisäosien esittely
  • Rakentamista edeltävä vahvistus komennolla.

'Asenna lisäosat' on tapa lisätä asetuksia pom.xml-tiedostoon. 'Tarkista komennolla ennen rakentamista' tarkoittaa kirjaimellisesti manuaalista tarkistamista komennolla ennen rakentamista. Haluaisin selittää, miten tämä tehdään erityisesti.

2-1. Lisäosien esittely

Seuraavista Maven-sivustoista voi olla apua.

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

Lisää seuraavat asetukset pom.xml-tiedostoon.

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>

Jos edellä mainitut asetukset on asetettu, seuraava virheilmoitus tulee, ja rakentaminen epäonnistuu, jos rakentamishetkellä on kirjastoristiriitoja.

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

Jos buildia käytetään ilman lisäosia, virheitä ei esiinny ja build päättyy normaalisti. Jos haluat havaita ristiriidat, varmista, että tämä on määritetty.

2-2. Rakentamista edeltävä vahvistus komennolla.

Riippuvuudet tarkistetaan seuraavien komentojen avulla

mvn dependency:tree -Dverbose

komento, ja jos ristiriita on olemassa, näyttöön tulee teksti "ei ristiriitaa". On myös mahdollista rajata tulosteet vain niihin alueisiin, joissa on ristiriitoja, kuten seuraavassa komennossa. ※'find' on Windowsin komento. Linuxissa tämä on 'grep'.

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

Kirjastoristiriidat voidaan tarkistaa tarkastelemalla edellä mainittujen komentojen tuloksia.

3. yhteenveto

Jos haluat havaita kirjastoristiriidat luotettavasti, suosittelemme 'Asenna lisäosia'. Lisäosien käyttöönotolla varmistetaan, että mahdolliset ristiriidat huomataan, koska rakentaminen epäonnistuu.

Kiitos, että katsoitte loppuun asti.