Kako preveriti konflikte knjižnic v programu Maven
Datum objave:20. januar 2021.
INFOMARTION > Kako preveriti konflikte knjižnic v programu Maven
Pregled.
Kako preveriti konflikte knjižnic v programu Maven. Maven samodejno razreši odvisnosti knjižnice jar, vendar vas privzeta konfiguracija ne obvesti o konfliktih. V takih primerih lahko v programu Maven preverite konflikte knjižnic.
Kazalo vsebine
1. Ko v programu Maven pride do navzkrižja knjižnic
Maven samodejno razreši odvisnosti knjižnic Java. Samodejno reševanje odvisnosti pomeni, da če imate datoteko Jar, ki jo potrebujete, bo samodejno pridobil datoteko Jar, ki je potrebna za zagon te datoteke Jar. Za več informacij o tem, kako deluje reševanje odvisnosti določenih knjižnic, glejte naslednji članek.
Kako Maven samodejno rešuje odvisnosti knjižnic jar.
Ko pride do knjižničnih konfliktov, se ti ne rešijo samodejno. Poleg tega, če nimate vzpostavljenih nastavitev, ne morete zaznati konflikta. Želimo opisati, kako preveriti konflikte v knjižnici.
2. Kako preveriti
Konflikte v knjižnici lahko preverite na dva glavna načina
- Predstavitev vtičnikov
- Potrditev pred gradnjo z ukazom.
'Namesti vtičnike' je metoda dodajanja nastavitev v pom.xml. 'Preveri z ukazom pred gradnjo' dobesedno pomeni ročno preverjanje z ukazom pred gradnjo. Rad bi pojasnil, kako to storiti.
2-1. Predstavitev vtičnikov
V pomoč so vam lahko naslednja spletna mesta Maven.
http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html
V pom.xml dodajte naslednje nastavitve.
<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>
Če vstavite zgornje nastavitve, se pojavi naslednja napaka in sestava se ne izvede, če v času sestavljanja pride do navzkrižja knjižnic.
[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.
Če je sestava uporabljena brez vtičnikov, ne pride do napak in sestava se normalno zaključi. Če želite zaznati konflikte, to nastavite.
2-2. Potrditev pred gradnjo z ukazom.
Odvisnosti se preverjajo z naslednjimi ukazi
mvn dependency:tree -Dverbose
in v primeru konflikta se prikaže "izpuščeno za konflikt". Izpis je mogoče zožiti samo na tista področja, kjer so konflikti, kot v naslednjem ukazu. ※'find' je ukaz za Windows. V operacijskem sistemu Linux je to program 'grep'.
mvn dependency:tree -Dverbose | find "omitted for conflict"
Konflikte knjižnic lahko preverite tako, da si ogledate rezultate zgornjih ukazov.
3. povzetek
Če želite zanesljivo zaznati navzkrižja knjižnic, priporočamo možnost "Namesti vtičnike". Z uvedbo vtičnikov zagotovite, da bodo morebitni konflikti opaženi, saj bo sestava neuspešna.
Hvala, ker ste gledali do konca.