Wie man in Maven auf Bibliothekskonflikte prüft


Datum der Veröffentlichung:20. Januar 2021.



INFOMARTION > Wie man in Maven auf Bibliothekskonflikte prüft

Überblick.

Wie man in Maven auf Bibliothekskonflikte prüft. Maven löst automatisch die Abhängigkeiten der jar-Bibliothek auf, aber die Standardkonfiguration informiert Sie nicht über Konflikte. Dies ist die Art und Weise, wie man in Maven in solchen Fällen auf Bibliothekskonflikte prüft.

Inhaltsübersicht

  1. Wenn Bibliothekskonflikte in Maven auftreten
  2. Wie prüfen
  3. Zusammenfassung

1. Wenn Bibliothekskonflikte in Maven auftreten

Maven löst automatisch die Abhängigkeiten von Java-Bibliotheken auf. Die automatische Auflösung von Abhängigkeiten bedeutet, dass, wenn Sie eine Jar-Datei benötigen, automatisch die Jar-Datei beschafft wird, die zum Ausführen dieser Jar-Datei erforderlich ist. Weitere Informationen darüber, wie die Auflösung spezifischer Bibliotheksabhängigkeiten funktioniert, finden Sie im folgenden Artikel.

Wie Maven automatisch die Abhängigkeiten von Jar-Bibliotheken auflöst.

Wenn jedoch Bibliothekskonflikte auftreten, werden sie nicht automatisch aufgelöst. Und wenn Sie die Einstellungen nicht vornehmen, können Sie nicht einmal einen Konflikt erkennen. Wir möchten Ihnen beschreiben, wie Sie auf Bibliothekskonflikte prüfen können.

2. Wie prüfen

Es gibt zwei Möglichkeiten, um zu prüfen, ob es Konflikte in der Bibliothek gibt

  • Einführung von Plug-Ins
  • Bestätigung vor der Erstellung per Befehl.

Plug-ins installieren" ist eine Methode zum Hinzufügen von Einstellungen zu pom.xml. Prüfen mit Befehl vor der Erstellung" bedeutet wörtlich, dass vor der Erstellung manuell mit einem Befehl geprüft wird. Ich möchte Ihnen erläutern, wie Sie dies konkret tun können.

2-1. Einführung von Plug-Ins

Die folgenden Maven-Webseiten können hilfreich sein.

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

Fügen Sie der Datei pom.xml die folgenden Einstellungen hinzu.

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>

Wenn die oben genannten Einstellungen eingefügt werden, tritt der folgende Fehler auf, und die Erstellung schlägt fehl, wenn zum Zeitpunkt der Erstellung Bibliothekskonflikte bestehen.

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

Wenn ein Build ohne Plug-ins angewendet wird, treten keine Fehler auf und der Build wird normal beendet. Wenn Sie Konflikte erkennen wollen, müssen Sie dies einrichten.

2-2. Bestätigung vor der Erstellung per Befehl.

Die Abhängigkeiten werden mit den folgenden Befehlen überprüft

mvn dependency:tree -Dverbose

und 'omitted for conflict' wird angezeigt, wenn es einen Konflikt gibt. Es ist auch möglich, die Ausgabe auf die Bereiche einzuschränken, in denen es Konflikte gibt, wie im folgenden Befehl. ※'find' ist der Befehl für Windows. Unter Linux ist dies 'grep'.

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

Bibliothekskonflikte können anhand der Ergebnisse der oben genannten Befehle überprüft werden.

3. Zusammenfassung

Wenn Sie Bibliothekskonflikte zuverlässig erkennen wollen, empfehlen wir die Option "Plug-ins installieren". Durch die Einführung von Plug-ins wird sichergestellt, dass etwaige Konflikte bemerkt werden, da der Build fehlschlägt.

Danke, dass Sie bis zum Ende zugesehen haben.