Hogyan ellenőrizhetjük a könyvtárkonfliktusokat a Mavenben


Megjelenés dátuma:január 2021.



INFOMARTION > Hogyan ellenőrizhetjük a könyvtárkonfliktusokat a Mavenben

Áttekintés.

Hogyan ellenőrizhetjük a könyvtárkonfliktusokat a Mavenben. A Maven automatikusan feloldja a jar könyvtár függőségeit, de az alapértelmezett konfiguráció nem tájékoztat a konfliktusokról. Így ellenőrizheti a Mavenben a könyvtárkonfliktusokat ilyen esetekben.

Tartalomjegyzék

  1. Amikor könyvtárkonfliktusok lépnek fel a Mavenben
  2. Hogyan ellenőrizhető
  3. összefoglaló

1. Amikor könyvtárkonfliktusok lépnek fel a Mavenben

A Maven automatikusan feloldja a Java könyvtárfüggőségeket. Az automatikus függőségi feloldás azt jelenti, hogy ha van egy Jar fájl, amire szükséged van, akkor automatikusan megkapod a Jar futtatásához szükséges Jar-t. Az egyes könyvtárfüggőségek feloldásának működéséről bővebben a következő cikkben olvashat.

Hogyan oldja fel a Maven automatikusan a jar könyvtárfüggőségeket.

A könyvtári konfliktusok azonban nem oldódnak fel automatikusan. Ráadásul, ha nincsenek meg a beállítások, még a konfliktust sem észlelheti. Szeretnénk leírni, hogyan ellenőrizheti a könyvtári konfliktusokat.

2. Hogyan ellenőrizhető

Két fő módja van a könyvtári konfliktusok ellenőrzésének

  • Plug-inek bemutatása
  • Az építés előtti megerősítés paranccsal.

A 'Plug-inek telepítése' egy módszer a beállítások pom.xml-hez való hozzáadására. A 'Check with command before build' szó szerint azt jelenti, hogy az építés előtti kézi ellenőrzés egy paranccsal. Szeretném elmagyarázni, hogyan kell ezt konkrétan megtenni.

2-1. Plug-inek bemutatása

A következő Maven weboldalak hasznosak lehetnek.

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

Adja hozzá a következő beállításokat a pom.xml fájlhoz.

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>

A fenti beállítások beillesztése esetén a következő hiba lép fel, és a build sikertelen, ha a build idején könyvtárkonfliktusok vannak.

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

Ha a buildet bővítmények nélkül alkalmazza, nem lép fel hiba, és a build normálisan befejeződik. Ha konfliktusokat szeretne észlelni, akkor ezt mindenképpen állítsa be.

2-2. Az építés előtti megerősítés paranccsal.

A függőségek ellenőrzése a következő parancsokkal történik

mvn dependency:tree -Dverbose

parancsot, és ha van konfliktus, megjelenik a 'kihagyva konfliktus esetén'. Az is lehetséges, hogy a kimenetet csak azokra a területekre szűkítsük, ahol konfliktusok vannak, mint a következő parancsban. ※A 'find' a Windows parancs. Linux alatt ez a 'grep'.

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

A könyvtárkonfliktusok ellenőrizhetők a fenti parancsok eredményeinek megnézésével.

3. összefoglaló

Ha megbízhatóan szeretné felismerni a könyvtárkonfliktusokat, javasoljuk a 'Plug-inek telepítése' opciót. A bővítmények bevezetése biztosítja, hogy az esetleges konfliktusokat észrevegyük, mivel a build sikertelen lesz.

Köszönjük, hogy a végéig figyeltek.