Sådan kontrolleres konflikter mellem biblioteker i Maven


Udgivelsesdato:20. januar 2021.



INFOMARTION > Sådan kontrolleres konflikter mellem biblioteker i Maven

Oversigt.

Sådan kontrolleres konflikter mellem biblioteker i Maven. Maven løser automatisk afhængighederne af jar-biblioteket, men standardkonfigurationen informerer dig ikke om konflikter. Sådan kontrollerer du, om der er bibliotekskonflikter i Maven i sådanne tilfælde.

Indholdsfortegnelse

  1. Når der opstår bibliotekskonflikter i Maven
  2. Sådan kontrollerer du
  3. resumé

1. Når der opstår bibliotekskonflikter i Maven

Maven løser automatisk Java-biblioteksafhængigheder. Automatisk afhængighedsopløsning betyder, at hvis du har en Jar-fil, som du har brug for, vil den automatisk hente den Jar-fil, der er nødvendig for at køre den Jar-fil. Du kan finde flere oplysninger om, hvordan opløsning af specifikke biblioteksafhængigheder fungerer, i følgende artikel.

Hvordan Maven automatisk løser jar-biblioteksafhængigheder.

Men når der opstår bibliotekskonflikter, løses de ikke automatisk. Hvis du ikke har indstillingerne på plads, kan du ikke engang opdage en konflikt, hvis du ikke har dem. Vi vil gerne beskrive, hvordan du tjekker, om der er konflikter på biblioteket.

2. Sådan kontrollerer du

Der er to hovedmetoder til at kontrollere, om der er konflikter på biblioteket

  • Introduktion af plug-ins
  • Bekræftelse før opbygning ved hjælp af kommando.

'Installér plug-ins' er en metode til at tilføje indstillinger til pom.xml. "Check with command before build" betyder bogstaveligt talt manuel kontrol med en kommando, før du bygger. Jeg vil gerne forklare, hvordan man konkret gør dette.

2-1. Introduktion af plug-ins

Følgende Maven-websteder kan være nyttige.

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

Tilføj følgende indstillinger til pom.xml.

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>

Hvis ovenstående indstillinger er indsat, opstår følgende fejl, og opbygningen mislykkes, hvis der er bibliotekskonflikter på opbygningstidspunktet.

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

Hvis der anvendes et build uden plug-ins, opstår der ingen fejl, og build'et afsluttes normalt. Hvis du ønsker at registrere konflikter, skal du sørge for at indstille dette.

2-2. Bekræftelse før opbygning ved hjælp af kommando.

Afhængigheder kontrolleres ved hjælp af følgende kommandoer

mvn dependency:tree -Dverbose

kommandoen, og "udeladt for konflikt" vises, hvis der er en konflikt. Det er også muligt at indsnævre output til kun at omfatte de områder, hvor der er konflikter, som i den følgende kommando. ※'find' er kommandoen til Windows. I Linux er dette "grep".

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

Bibliotekskonflikter kan kontrolleres ved at se på resultaterne af ovenstående kommandoer.

3. resumé

Hvis du ønsker at registrere bibliotekskonflikter på en pålidelig måde, anbefaler vi "Installer plug-ins". Ved at indføre plug-ins sikres det, at eventuelle konflikter bemærkes, da opbygningen vil mislykkes.

Tak, fordi du kiggede med til slutningen.




■INFORMATION

Klik her for at gå til den øverste side med oplysninger.


■PROFILE

Klik her for at se en profil.


■Kontaktoplysninger.

For forespørgsler om artiklen kan du kontakte os her.