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:
[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
Weiß jemand, wie man diese Probleme beheben kann, damit es direkt nach dem Erstellen funktioniert?
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-api
der Version mit dem SNAPSHOT
Suffix 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-repo
und 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.
Lass mich ein paar Worte sagen