Adicionar a biblioteca JGIT ao projeto causa sobreposição de recursos

ThrownRedstone

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:

Manifesto

[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

pom.xml

Alguém sabe como corrigir esses problemas para que funcione logo após a construção?

JockX

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-apida versão com SNAPSHOTsufixo, 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-repoe 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.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como adicionar recursos de biblioteca ao projeto Cordova?

Adicionar Moq a um projeto de teste causa um problema pseudoaleatório ao não carregar a biblioteca

Devo atualizar o README.md ao adicionar novos recursos ao projeto de código aberto?

Como adicionar o aplicativo de função ao projeto de grupo de recursos no Visual Studio 2017?

Resolva o problema para adicionar recursos de imagem ao projeto xamarin

Adicionar biblioteca de suporte ao projeto Android Studio

Como adicionar um projeto de biblioteca externa ao Android Studio 1.2.2? com solução

Não consigo adicionar a biblioteca de suporte ao meu projeto Android Studio

Android: Adicionar biblioteca externa ao projeto não funciona

Não é possível adicionar biblioteca ao projeto Android Studio

Não é possível adicionar uma referência ao projeto - UWP para projeto de biblioteca de classes?

Como posso adicionar recursos de projeto Java normal ao projeto EJB no Eclipse (.ear)?

Como adicionar biblioteca ICU ao projeto?

Atualizar as versões da biblioteca causa falha de construção no projeto que depende da biblioteca

Adicionar butterknife ao projeto da biblioteca do Android dá erro de tempo de compilação "o pacote não existe" para as classes da biblioteca

Recursos de biblioteca não compilados ao publicar para AIR

como adicionar biblioteca ao Android Studio, não ao projeto único

Adicionar interface de desserialização ao modelo causa erro

Adicionar recursos VSIX à biblioteca de classes C #

C / C ++ com GCC: adicionar arquivos de recursos estaticamente ao executável / biblioteca

Exceção ao adicionar biblioteca de tags personalizadas ao JSP

Adicionar referência de biblioteca de classe C # ao projeto VB.Net

Android Studio - Adicionar arquivo de biblioteca compartilhada (.so) e arquivo de cabeçalho (.h) ao projeto

Como adicionar um projeto de biblioteca de classes ao Uno-Platform?

Como dizer ao nuget para adicionar arquivos de recursos de pacote como links, e não copiá-los para o diretório do projeto

Problemas ao compilar o projeto de exemplo da biblioteca AutoValue

Adicionar uma biblioteca de terceiros (twilio) ao projeto usando Google App Engine e Django

Como adicionar uma biblioteca javascript externa ao projeto de typescript ionic 3

Como adicionar recursos ao androidTest para a biblioteca Android no AndroidStudio

TOP lista

quentelabel

Arquivo