Πώς να ελέγξετε για συγκρούσεις βιβλιοθηκών στο Maven


Ημερομηνία δημοσίευσης:20 Ιανουαρίου 2021.



INFOMARTION > Πώς να ελέγξετε για συγκρούσεις βιβλιοθηκών στο Maven

Επισκόπηση.

Πώς να ελέγξετε για συγκρούσεις βιβλιοθηκών στο Maven. Το Maven επιλύει αυτόματα τις εξαρτήσεις της βιβλιοθήκης jar, αλλά η προεπιλεγμένη διαμόρφωση δεν σας ενημερώνει για τις συγκρούσεις. Αυτός είναι ο τρόπος ελέγχου για συγκρούσεις βιβλιοθηκών στο Maven σε τέτοιες περιπτώσεις.

Πίνακας περιεχομένων

  1. Όταν συμβαίνουν συγκρούσεις βιβλιοθηκών στο Maven
  2. Πώς να ελέγξετε
  3. περίληψη

1. Όταν συμβαίνουν συγκρούσεις βιβλιοθηκών στο Maven

Το Maven επιλύει αυτόματα τις εξαρτήσεις βιβλιοθηκών Java. Η αυτόματη επίλυση εξαρτήσεων σημαίνει ότι αν έχετε ένα αρχείο Jar που χρειάζεστε, θα πάρει αυτόματα το Jar που απαιτείται για την εκτέλεση αυτού του Jar. Για περισσότερες πληροφορίες σχετικά με το πώς λειτουργεί η επίλυση συγκεκριμένων εξαρτήσεων βιβλιοθηκών, ανατρέξτε στο ακόλουθο άρθρο.

Πώς το Maven επιλύει αυτόματα τις εξαρτήσεις βιβλιοθηκών jar.

Ωστόσο, όταν εμφανίζονται συγκρούσεις βιβλιοθηκών, δεν επιλύονται αυτόματα. Επιπλέον, αν δεν έχετε τις ρυθμίσεις στη θέση τους, δεν μπορείτε καν να εντοπίσετε μια σύγκρουση. Θα θέλαμε να περιγράψουμε τον τρόπο ελέγχου για συγκρούσεις βιβλιοθηκών.

2. Πώς να ελέγξετε

Υπάρχουν δύο κύριοι τρόποι για να ελέγξετε για συγκρούσεις στη βιβλιοθήκη

  • Εισαγωγή των plug-ins
  • Επιβεβαίωση πριν από την κατασκευή με εντολή.

Το 'Install plug-ins' είναι μια μέθοδος προσθήκης ρυθμίσεων στο pom.xml. 'Έλεγχος με εντολή πριν από την κατασκευή' σημαίνει κυριολεκτικά χειροκίνητος έλεγχος με μια εντολή πριν από την κατασκευή. Θα ήθελα να σας εξηγήσω πώς να το κάνετε αυτό συγκεκριμένα.

2-1. Εισαγωγή των plug-ins

Οι ακόλουθοι ιστότοποι του Maven μπορούν να σας βοηθήσουν.

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

Προσθέστε τις ακόλουθες ρυθμίσεις στο 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>

Εάν εισαχθούν οι παραπάνω ρυθμίσεις, εμφανίζεται το ακόλουθο σφάλμα και η κατασκευή αποτυγχάνει εάν υπάρχουν συγκρούσεις βιβλιοθηκών κατά τη στιγμή της κατασκευής.

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

Αν εφαρμοστεί μια κατασκευή χωρίς πρόσθετα, δεν εμφανίζονται σφάλματα και η κατασκευή τερματίζεται κανονικά. Αν θέλετε να εντοπίζετε συγκρούσεις, φροντίστε να το ρυθμίσετε αυτό.

2-2. Επιβεβαίωση πριν από την κατασκευή με εντολή.

Οι εξαρτήσεις ελέγχονται με τις ακόλουθες εντολές

mvn dependency:tree -Dverbose

και εμφανίζεται η ένδειξη "παραλείπεται για σύγκρουση" εάν υπάρχει σύγκρουση. Είναι επίσης δυνατό να περιορίσετε την έξοδο μόνο στις περιοχές όπου υπάρχουν συγκρούσεις, όπως στην ακόλουθη εντολή. ※'find' είναι η εντολή για τα Windows. Για το Linux, αυτό είναι το 'grep'.

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

Οι συγκρούσεις βιβλιοθηκών μπορούν να ελεγχθούν εξετάζοντας τα αποτελέσματα των παραπάνω εντολών.

3. περίληψη

Αν θέλετε να εντοπίζετε αξιόπιστα τις συγκρούσεις βιβλιοθηκών, συνιστούμε την επιλογή 'Εγκατάσταση πρόσθετων προγραμμάτων'. Η εισαγωγή πρόσθετων προγραμμάτων διασφαλίζει ότι τυχόν συγκρούσεις θα γίνουν αντιληπτές, καθώς η κατασκευή θα αποτύχει.

Σας ευχαριστούμε που παρακολουθήσατε μέχρι το τέλος.