68 votes

Dans Maven, comment exclure les ressources du jar généré ?

Lorsque je crée un jar exécutable avec des dépendances (à l'aide de la fonction ce guide ), tous les fichiers de propriétés sont empaquetés dans ce jar également. Comment faire pour que cela ne se produise plus ? Merci.

MISE À JOUR : j'ai essayé de les exclure en utilisant la fonction Plugin ressources Maven mais mon application ne trouve pas les fichiers de propriétés lorsque je la lance dans Eclipse (clic droit sur le module -> Exécuter en tant que -> Application Java).

MISE À JOUR : Merci pour vos réponses utiles. Je pense que je ferais mieux de passer du temps à apprendre Maven, pour l'instant je choisis juste la solution la plus simple.

124voto

Damior Points 621

Pour exclure tout fichier d'un répertoire jar / cible, vous pouvez utiliser la fonction <excludes> dans votre fichier pom.xml.

Dans l'exemple suivant, tous les fichiers avec .properties ne seront pas inclus :

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>*.properties</exclude>
            </excludes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

17voto

romaintaz Points 32120

Par convention, le répertoire src/main/resources contient les ressources qui seront utilisées par l'application. Maven les inclura donc dans le fichier final JAR .

Ainsi, dans votre application, vous y accéderez à l'aide de la balise getResourceAsStream() au fur et à mesure que les ressources sont chargées dans le classpath.

Si vous avez besoin de les avoir en dehors de votre application, ne les stockez pas dans src/main/resources car ils seront regroupés par Maven. Bien sûr, vous pouvez les exclure (en utilisant le lien donné par chkal ) mais il est préférable de créer un autre répertoire (par exemple src/main/external-resources ) afin de conserver les conventions relatives aux src/main/resources répertoire.

Dans ce dernier cas, vous devrez livrer les ressources indépendamment comme votre fichier JAR (ceci peut être réalisé en utilisant le plugin Assembly). Si vous avez besoin d'y accéder dans votre environnement Eclipse, allez dans la section Properties de votre projet, puis dans Java Build Path sur Sources ajoutez le dossier (par exemple src/main/external-resources ). Eclipse ajoutera alors ce répertoire dans le classpath.

9voto

swu Points 170

Placez ces fichiers de propriétés dans src/test/resources . Fichiers dans src/test/resources sont disponibles dans Eclipse automatiquement via eclipse:eclipse mais ne sera pas inclus dans le JAR empaqueté par Maven.

7voto

chkal Points 3346

Voulez-vous dire aux fichiers de propriété situés dans src/main/resources ? Alors vous devez les exclure en utilisant le maven-resource-plugin. Voir la page suivante pour plus de détails :

http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html

0voto

Pascal Thivent Points 295221

Lorsque je crée un jar exécutable avec des dépendances (en utilisant ce guide), tous les fichiers de propriétés sont également empaquetés dans ce jar. Comment empêcher que cela ne se produise ? Merci.

Fichiers de propriétés d'où ? Votre jar principal ? Des dépendances ?

Dans le premier cas, mettre les ressources sous src/test/resources comme suggéré est probablement l'option la plus directe et la plus simple.

Dans le dernier cas, vous devrez créer un descripteur d'assemblage personnalisé avec des paramètres spéciaux. excludes/exclude dans le unpackOptions .

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