5 votes

gradle : exclure une dépendance lors de la création de fatJar

Il y a beaucoup de réponses répétées sur la façon d'exclure un fichier individuel d'un fatJar. En général, les fichiers exclus se trouvent dans META-INF et sont exclus soit à cause d'un conflit de noms de fichiers, soit parce qu'il s'agit d'une signature copiée d'un fichier Jar libarar dépendant qui n'est pas valide pour le fichier Jar nouvellement créé.

Exemple pour maven : Comment puis-je savoir quel jar signé provoque l'échec de maven-shade-plugin ?

Exemple pour gradle : Suppression des signatures de jar dans la construction Gradle

Ces solutions ne supprimaient toutefois que le fichier incriminé individuellement.

Comment faire en sorte qu'un fatJar soit exclu d'une bibliothèque de dépendances spécifique (pas des fichiers individuels de cette bibliothèque) ?

Par exemple, dans la question 36226033 il est facile d'exclure la signature copiée depuis BouncyCastle, mais existe-t-il un moyen d'exclure la bibliothèque de dépendances bcprov-jdk15on-*.jar entièrement, de sorte que l'utilisateur doit disposer de la bibliothèque afin d'exécuter le fat Jar généré ?

Il est prouvé que cela ne fonctionne pas :

task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example',
                'Implementation-Version': version,
                'Main-Class': 'com.alphawallet.scripttool.Main'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    exclude('**/bcprov-jdk15on-1.62.jar')
    with jar
}

Con exclude('**/bcprov-jdk15on-1.62.jar') le contenu de ce fichier jar est toujours copié sur le gros jar généré.

Merci. La motivation est d'envoyer mon application Java à des systèmes qui fournissent leur propre bibliothèque de sécurité BouncyCastle (par exemple Debian Linux), au lieu d'incorporer une copie non signée de cette bibliothèque de sécurité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X