web-dev-qa-db-fra.com

Comment créer un jar Fat exécutable avec Gradle avec des dépendances d'implémentation

J'ai un projet simple dans Gradle 4.6 et j'aimerais en faire un pot exécutable. J'ai essayé shadow, gradle-fatjar-plugin, gradle-one-jar, spring-boot-gradle-plugin _ plugins mais aucun d’eux n’ajoute mes dépendances déclarées comme implementation (je n’en ai aucune compile.) Cela fonctionne avec compile par exemple. pour gradle-one-jar _ plugin mais je voudrais avoir implementation dépendances.

Merci beaucoup!

27
Dmitry Senkovich

Vous pouvez utiliser le code suivant.

jar {
    manifest {
        attributes(
                'Main-Class': 'com.package.YourClass'
        )
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
 }

Assurez-vous de remplacer com.package.YourClass Par le nom de classe complet contenant static void main( String args[] ).

Cela emballera les dépendances d'exécution. Vérifiez le docs si vous avez besoin de plus d’informations.

35
miskender

La même tâche peut être accomplie en utilisant Gradle Kotlin DSL de la même manière:

val jar by tasks.getting(Jar::class) {
    manifest {
        attributes["Main-Class"] = "com.package.YourClass"
    }

    from(configurations.runtime.map { if (it.isDirectory) it else zipTree(it) })
}
2
SerCe