web-dev-qa-db-fra.com

Ajoutez des ressources, configurez des fichiers dans votre pot à l'aide de gradle

Comment ajouter des fichiers de configuration ou toute autre ressource dans mon pot à l'aide de gradle?

Ma structure de projet:

src/main/Java/com/perseus/.. --- Java packages (fichiers sources)

src/main/Java/config/*. xml --- Fichiers de configuration Spring

Structure de jar attendue:

com/perseus/.. --- Java packages (fichiers de classe)

config/*. xml --- Fichiers de configuration Spring

67
Pritesh Mhatre

Merci les gars, je migrais un projet existant vers Gradle et je n'aimais pas trop l'idée de changer la structure du projet.

Je l'ai compris, j'ai pensé que cette information pourrait être utile aux débutants.

Voici un exemple de tâche de mon 'build.gradle':

version = '1.0.0'

jar {
   baseName = 'analytics'
   from('src/main/Java') {
      include 'config/**/*.xml'
   }

   manifest {
       attributes 'Implementation-Title': 'Analytics Library', 'Implementation-Version': version
   }
}
54
Pritesh Mhatre

Déplacez les fichiers de configuration de src/main/Java vers src/main/resources.

65
Peter Niederwieser

Je suis tombé sur cet article en cherchant comment ajouter un répertoire supplémentaire pour les ressources. J'ai trouvé une solution qui peut être utile à quelqu'un. Voici ma configuration finale pour l'obtenir:

sourceSets {
    main {
        resources {
            srcDirs "src/main/resources", "src/main/configs"
        }
    }
}
57
Wellington Souza

Par défaut, tous les fichiers que vous ajoutez à src/main/resources seront inclus dans le fichier jar.

Si vous devez modifier ce comportement pour une raison quelconque, vous pouvez le faire en configurant sourceSets.

Ceci une partie de la documentation contient tous les détails

22
geoand

J'ai rencontré le même problème. J'avais un fichier PNG dans un package Java et il n'a pas été exporté dans le fichier JAR final avec les sources, ce qui a entraîné le blocage de l'application au démarrage (fichier introuvable).

Aucune des réponses ci-dessus n'a résolu mon problème, mais j'ai trouvé la solution sur les forums Gradle. J'ai ajouté ce qui suit à mon fichier build.gradle:

sourceSets.main.resources.srcDirs = [ "src/" ]
sourceSets.main.resources.includes = [ "**/*.png" ]

Il demande à Gradle de rechercher des ressources dans le dossier src et de lui demander d'inclure uniquement les fichiers PNG.

EDIT: Attention, si vous utilisez Eclipse, cela cassera vos configurations d'exécution et vous obtiendrez une erreur main class not found lorsque vous essayez d'exécuter votre programme. Pour résoudre ce problème, la seule solution que j'ai trouvée consiste à déplacer la ou les images dans un autre répertoire, res/ par exemple, et de le définir comme srcDirs au lieu de src/.

16
flawyte

Sachez que le chemin sous src/main/resources doit correspondre au chemin de package de vos fichiers .class souhaitant accéder à la ressource. Voir ma réponse ici .

1
mike rodent