La construction d'un uberjar avec Gradle
Je suis un Gradle novice. Je veux construire une uberjar (AKA fatjar), qui comprend toutes les dépendances transitives du projet. Ce que les lignes dois-je ajouter à mon "build.gradle"?
C'est ce que j'ai actuellement: (j'ai copié à partir de quelque part quelques jours en arrière, mais ne pas se rappeler d'où l'.)
task uberjar(type: Jar) {
from files(sourceSets.main.output.classesDir)
manifest {
attributes 'Implementation-Title': 'Foobar',
'Implementation-Version': version,
'Built-By': System.getProperty('user.name'),
'Built-Date': new Date(),
'Built-JDK': System.getProperty('java.version'),
'Main-Class': mainClassName
}
}
- Vous pouvez essayer en utilisant le application plug-in à la place.
- Cela permettra de travailler aussi longtemps que vous n'avez pas toutes les dépendances. Mais une fois que votre projet a des dépendances ceux qui ne seront pas obtenir regroupés dans le uberjar.
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé le fatjar exemple dans le gradle livre de recettes?Ce que vous cherchez est l'ombre du plugin pour gradle
J'ai remplacé le
task uberjar(..
avec les éléments suivants:Les exclusions sont nécessaires, car en leur absence, vous touchera cette question.
configurations.runtime
pour inclure toutes les dépendances d'exécutionwith jar
ci-dessous manifeste pour obtenir les fichiers dansjava/main/resources
dans le uberjarsourceSets.getByName('main').runtimeClasspath
Simplement ajouter ceci à votre module java build.gradle.
mainClassName = "my.main.Class"
Ce résultat dans [nom_module]/build/libs/[nom_module].fichier jar.
compile
Le ternaire permet de tirer dans les deux dossiers et les fichiers zip (comme des pots) comme s'ils étaient aussi des dossiersruntime
ouruntimeOnly
déclaré dépendances, qui sera la cause de la demande de casser lors de l'exécution.compile
avecruntimeClasspath
comme spécifié dans cette réponse.J'ai trouvé ce projet très utile. En l'utilisant comme une référence, mon Gradle uberjar tâche serait
Invalid signature file digest for Manifest main attributes
quand j'ai essayer cetteexclude "META-INF/*.SF"
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
comme missingfaktor réponse