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