Estou simplesmente tentando incluir o JGIT no meu projeto de plugin do Spigot. Quando compilo, dá-me um erro sobre a sobreposição de recursos e cria um plugin inutilizável, a menos que eu exclua os 2 arquivos inferiores:
[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
Além disso, mesmo que o Spigot já esteja baixado, às vezes ele também começa a tentar baixá-lo do JGIT!
[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
Alguém sabe como corrigir esses problemas para que funcione logo após a construção?
Você está usando o plug-in maven shade para copiar o conteúdo de algumas de suas dependências e incluí-lo em seu artefato resultante como próprio. O problema é que os arquivos do diretório META-INF são geralmente específicos para o arquivo jar original do qual são distribuídos, e sua nomenclatura é bastante padrão, portanto, não é surpreendente que vários jars contenham um arquivo chamado MANIFEST.MF.
Esta é a causa do aviso sobre a sobreposição de recursos - o que por si só é bastante inofensivo para seus propósitos. Se, no entanto, a existência dos arquivos restantes empacotados no META-INF do JGIT causar problemas, exclua-os.
Essa configuração impedirá a cópia do META-INF de qualquer dependência que você incluir em seu projeto:
<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>
Ou, caso a especificação do plugin de fato exija que você inclua seu próprio MANIFEST.MF, você pode criar um assim:
<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>
Além disso, sobre a última parte da pergunta - seu projeto depende spigot-api
da versão com SNAPSHOT
sufixo, ou seja, esta versão pode ser atualizada a qualquer momento pelo desenvolvedor sem alterar o número. Para o maven saber se existe uma versão mais recente, ele precisa passar pela lista de repositórios e perguntar a cada um se eles possuem um artefato atualizado.
Você tem 3 repositórios na seção de repositórios e talvez queira desabilitar as verificações de atualizações de instantâneos como este:
<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>
No entanto, você não deve desativá-lo spigotmc-repo
e esperar uma verificação diária de atualização deste repositório, a menos que escolha uma versão sem instantâneo, que uma vez lançada e baixada para o seu PC, nunca precisará de atualização.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras