web-dev-qa-db-fra.com

Comment puis-je écrire maven build pour ajouter des ressources à classpath?

Je construis un pot en utilisant maven avec une simple installation de maven. Si j'ajoute un fichier à src/main/resources il peut être trouvé sur le chemin de classe mais il a un dossier de configuration où je veux que ce fichier aille mais le déplacer dans le dossier de configuration le fait disparaître du chemin de classe.

40
Java Ka Baby

Si vous placez quelque chose dans le répertoire src/main/resources, Alors par défaut, il se retrouvera dans votre *.jar Final. Si vous le référencez à partir d'un autre projet et qu'il ne peut pas être trouvé sur un chemin de classe, vous avez fait l'une de ces deux erreurs:

  1. *.jar N'est pas correctement chargé (peut-être une faute de frappe dans le chemin?)
  2. vous n'adressez pas la ressource correctement, par exemple: /src/main/resources/conf/settings.properties est vu sur le chemin de classe comme classpath:conf/settings.properties
48
ŁukaszBachman

Une alternative plus propre de placer votre fichier de configuration dans un sous-dossier de src/main/resources serait d'améliorer vos emplacements de chemin de classe. C'est extrêmement facile à faire avec Maven.

Par exemple, placez votre fichier de propriétés dans un nouveau dossier src/main/config, et ajoutez ce qui suit à votre pom:

 <build>
    <resources>
        <resource>
            <directory>src/main/config</directory>
        </resource>
    </resources>
 </build>

À partir de maintenant, tous les fichiers sous src/main/config sont considérés comme faisant partie de votre chemin de classe (notez que vous pouvez en exclure certains du dernier bocal si nécessaire: ajoutez simplement dans la section de construction:

    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>my-config.properties</exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>

de sorte que my-config.properties puisse être trouvé dans votre chemin de classe lorsque vous exécutez votre application à partir de votre IDE, mais restera externe à votre pot dans votre distribution finale).

70
Yanflea
By default maven does not include any files from "src/main/Java". 
You have two possible way to that.
  1. put all your resource files (different than Java files) to "src/main/resources" - this is highly recommended  
  2. Add to your pom (resource plugin):

 <resources>
       <resource>
           <directory>src/main/resources</directory>
        </resource>
            <resource>
                <directory>src/main/Java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
  </resources>
3
Mahendra Sri