Das Hinzufügen der JGIT-Bibliothek zum Projekt führt zu überlappenden Ressourcen

ThrownRedstone

Ich versuche einfach nur, JGIT in mein Spigot-Plugin-Projekt aufzunehmen. Wenn ich kompiliere, gibt es mir einen Fehler über sich überschneidende Ressourcen und erstellt ein unbrauchbares Plugin, es sei denn, ich lösche die 2 unteren Dateien:

Manifest

[WARNING] CrucialPlugin-1.0.jar, JavaEWAH-1.1.13.jar, org.eclipse.jgit-6.1.0.202203080745-r.jar, slf4j-api-1.7.30.jar define 1 overlapping resource: 
[WARNING]   - META-INF/MANIFEST.MF

Obwohl Spigot bereits heruntergeladen ist, versucht es manchmal auch, es von JGIT herunterzuladen!

[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------------< me:CrucialPlugin >--------------------------
[INFO] Building CrucialPlugin 1.0
[INFO] --------------------------------[ jar ]---------------------------------
Downloading from jgit-repository: https://repo.eclipse.org/content/groups/releases/org/spigotmc/spigot-api/1.18.2-R0.1-SNAPSHOT/maven-metadata.xml

pom.xml

Weiß jemand, wie man diese Probleme beheben kann, damit es direkt nach dem Erstellen funktioniert?

JockX

Sie verwenden das Maven-Shade-Plug-In, um den Inhalt einiger Ihrer Abhängigkeiten zu kopieren und als eigenes in Ihr resultierendes Artefakt einzufügen. Das Problem ist, dass die Dateien aus dem Verzeichnis META-INF im Allgemeinen spezifisch für die ursprüngliche JAR-Datei sind, von der sie verteilt werden, und ihre Benennung ziemlich standardisiert ist, daher ist es nicht überraschend, dass mehrere JAR-Dateien eine Datei mit dem Namen MANIFEST.MF enthalten.

Dies ist der Grund für die Warnung vor sich überschneidenden Ressourcen - was an sich für Ihre Zwecke ziemlich harmlos ist. Wenn jedoch das Vorhandensein der verbleibenden Dateien, die in META-INF von JGIT gepackt sind, Probleme verursacht, schließen Sie sie aus.

Diese Konfiguration verhindert das Kopieren von META-INF aus allen Abhängigkeiten, die Sie in Ihr Projekt aufnehmen:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/**</exclude>
                                </excludes>
                            </filter>
                        </filters>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Oder falls die Plugin-Spezifikation tatsächlich erfordert, dass Sie Ihre eigene MANIFEST.MF einbinden, können Sie eine wie diese erstellen:

                    <configuration>
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/**</exclude>
                                </excludes>
                            </filter>
                        </filters>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <manifestEntries>
                                    <Title>this is a title</Title>
                                    <Some-Field-Name>some value</Some-Field-Name>
                                </manifestEntries>
                            </transformer>
                        </transformers>
                    </configuration>

Auch zum letzten Teil der Frage: Ihr Projekt hängt von spigot-apider Version mit dem SNAPSHOTSuffix ab, was bedeutet, dass diese Version jederzeit vom Entwickler aktualisiert werden kann, ohne die Nummer zu ändern. Damit Maven weiß, ob es eine neuere Version gibt, muss es die Liste der Repositories durchgehen und jedes einzelne fragen, ob es ein aktualisiertes Artefakt gibt.

Sie haben 3 Repositories im Abschnitt Repositories, und Sie möchten möglicherweise die Überprüfung auf Aktualisierungen von Snapshots wie folgt deaktivieren:

<repositories>
    <repository>
        <id>spigotmc-repo</id>
        <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
    </repository>
    <repository>
        <id>sonatype</id>
        <url>https://oss.sonatype.org/content/groups/public/</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>jgit-repository</id>
        <url>https://repo.eclipse.org/content/groups/releases/</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

Sie sollten dies jedoch nicht deaktivieren spigotmc-repound mit einer täglichen Suche nach Updates aus diesem Repo rechnen, es sei denn, Sie wählen eine Nicht-Snapshot-Version, die nach der Veröffentlichung und dem Herunterladen auf Ihren PC niemals aktualisiert werden muss.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Das Hinzufügen der while-Schleife zum Skript führt zu Fehlern bei der Eingabe

Führt das Hinzufügen eines Elements zu einer Liste zum Kopieren der Liste oder nicht?

Das Hinzufügen von .removeStateDidListener zu deinit führt zum Absturz der Anwendung

Das Hinzufügen der Uhrzeit zum Kalenderdatum unter Linux führt zu einem falschen Ergebnis

Das Hinzufügen von AppCentre Pod zum xCode-Projekt führt zu einem Fehler beim Importieren von Modulen

Hinzufügen einer Bibliothek zum Projekt, Android

Das Hinzufügen eines Knotens zum Ende der verknüpften Liste in C führt zu einem Stapelspeicherauszug

Wie führt das Hinzufügen von n ganzen Zahlen zu einer Zeichenfolge zum Subtrahieren der ersten n Zeichen?

Das Hinzufügen von Gomock-Tests zum Projekt führt beim Ausführen des Tests zu "Build-Einschränkungen schließen alle Go-Dateien aus"

Das Hinzufügen einer InMobi-Abhängigkeit mit einer Version wie 'number.xx' zum Android-Projekt führt zu einem Fehler

Hinzufügen der Google Play Services-Bibliothek zum Qt-Projekt

Das schnelle Hinzufügen von int zum Vektor und das Löschen führt zu Zugriffsverletzungen

Das Hinzufügen eines Fragments zum Framelayout führt zum Ausblenden der Support-Aktionsleiste

Das Hinzufügen eines Zeichenfolgenelements der Liste zu einer anderen Zeichenfolge führt zum Versuch, eine ganze Liste hinzuzufügen.

Hinzufügen der Intro.JS-Bibliothek zu einem Vue-Cli / Webpack-Projekt

Das Hinzufügen von Butterknife zum Android-Bibliotheksprojekt führt zu einem Fehler bei der Kompilierung "Paket existiert nicht" für Bibliotheksklassen

Das Hinzufügen eines Abschnitts zu appsettings.json führt zum Absturz

Das Hinzufügen des UUID-Typs zu Cerberus führt zum Fehler BAD_TYPE

Das Hinzufügen des zweiten Kindes zum Supervisor führt zu einem Fehler

Das Hinzufügen einer Where-Bedingung zum Zeitstempel führt zu ungeraden aggregierten Ergebnissen

Das Hinzufügen einer Pfeilfunktion zum Eingabefeld führt zu einem Fehler

Das Hinzufügen eines Bildes zum Element mit appendChild führt zu einem Fehler

Das Hinzufügen von media_ids zum Twitter-API-Aufruf führt zu Authentifizierungsproblemen

Das Hinzufügen eines Arrays zum useEffect-Abhängigkeitsarray führt zu einer Endlosschleife

Das Hinzufügen von Kriterien zum Verfahren führt zu einer schlechten Leistung

Das Hinzufügen von Elementen zu einem Stapel führt zum Absturz

So fügen Sie eine Bibliothek zu Android Studio hinzu, nicht das einzelne Projekt

Das Hinzufügen von Firestore zu meinem Projekt führt zu einem Fehler bei meinen Echtzeit-Datenbankabfragen

Das Hinzufügen einer Datei von der URL zum Docker-Image führt zu einem anderen Ergebnis, wenn Sie Volume verwenden

TOP Liste

  1. 1

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  2. 2

    Wie füge ich mehrere Spalten in einer Spalte mit derselben Tabelle in SQL Server zusammen?

  3. 3

    Wie kann man Gitterquadrate dazu bringen, die Farbe zu ändern?

  4. 4

    Ich kann nicht verstehen, wie man Go-Code in mehreren Dateien kompiliert

  5. 5

    Zählen Sie die Vorkommen jedes Werts in einem Tupel in Python

  6. 6

    Gibt es eine sauberere Möglichkeit, Konstruktorargumente und Instanzeigenschaften einer Klasse in Typescript zu definieren?

  7. 7

    So implementieren Sie Pushwoosh mit ionic 2

  8. 8

    Wie wird der Wert im Dropdown-Menü basierend auf den ausgewählten Daten / IDs angezeigt?

  9. 9

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  10. 10

    Ändern Sie den Knotenpfad in das aktuelle Verzeichnis

  11. 11

    So erstellen Sie ein Array von Objekten aus zwei Arrays von Objekten mit einem gemeinsamen Schlüssel - JavaScript

  12. 12

    Rufen Sie die ID aus der Datagrid-Ansicht ab und zeigen Sie die Daten in Textfeldern einem anderen Formular an

  13. 13

    base js: Wie füge ich einem Objekt eine Eigenschaft auf die 'alte' Weise hinzu?

  14. 14

    Ersetze einen Teil einer Zeichenfolge durch eine Pandas-Spalte als Muster

  15. 15

    Blättern Sie auf Radio Click zur Abschnitts-ID

  16. 16

    CBCentralManager wird nach dem Verbinden neu gestartet

  17. 17

    Scherz, wie man eine Funktion verspottet, die von einer verspotteten Funktion zurückgegeben wird

  18. 18

    django-allauth Empfängersignal zum Hinzufügen einer Gruppenberechtigung zum Benutzer bei der Anmeldung

  19. 19

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  20. 20

    AQL: Teilweise Übereinstimmung in einer Reihe von Zeichenfolgen

  21. 21

    So summieren Sie die Werte zweier Tabellen und gruppieren sie nach Datum

heißlabel

Archiv