Je veux utiliser Maven pour remplacer certains de mes fichiers * .properties dans mon fichier de guerre.
J'ai créé des dossiers dev, testez et produit dans mon dossier de ressources. Maintenant, je veux seulement avoir l'un de ces dossiers utilisée dans le chemin du dossier Ressources dans mon fichier de guerre lors de l'exécution du profil correspondant. Le résultat est que Maven se copie également tous les autres dossiers, donc ce sont deux doubles dans la classe de classe. Voici ma configuration: P>
<profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.3</version> <executions> <execution> <id>copy-dev-resources</id> <phase>process-resources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <overwrite>true</overwrite> <outputDirectory>${basedir}/target/classes</outputDirectory> <resources> <resource> <!-- source --> <directory>src/main/resources/dev</directory> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile>
4 Réponses :
Maven par défaut copie tous les fichiers dans "SRC / Main / Ressources" dans le dossier de sortie, donc dans votre configuration actuelle, il créerait probablement "Dev", "Test" et "PROD" dossiers avec leur contenu, puis copiez-la. Les ressources de développement sans préfixe "DEV".
Je suggérerais de laisser le dossier Ressources par défaut tel qu'il est et n'utilisez-le que pour les ressources indépendantes du profil. Dans votre profil, vous pouvez ensuite configurer des dossiers de ressources supplémentaires: p> Il doit également être possible de la configurer dans la section de construction commune à l'aide des propriétés définies dans les profils: P> <build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>dev/**</exclude>
<exclude>test/**</exclude>
<exclude>prod/**</exclude>
</excludes>
</resource>
</resources>
</build>
La partie "principale" de la structure de répertoires Maven existe à cette fin. Au lieu de créer des répertoires dans la ressource Dir, vous devez créer plus d'AIRS dans votre répertoire SRC. Il s'agit du comportement par défaut et il est déjà mis en œuvre en laissant les ressources de test remplacer les ressources principales pendant les phases de test du cycle de vie maven.
Votre structure doit ressembler à ceci: p>
src main resources a.properties b.properties c.properties test resources b.properties c.properties dev resources b.properties
J'utilisais le fichier Assembly.xml à Maven et utilisé cet ensemble de code pour vous assurer que mon fichier de ressources était au répertoire racine de l'application ...
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> <id>distribution</id> <formats> <format>tar.gz</format> </formats> <fileSets> <fileSet> <directory>${basedir}</directory> <includes> <include>bin/**</include> <include>webapps/**</include> <include>data/**</include> </includes> </fileSet> <fileSet> <directory>${basedir}/target</directory> <includes> <include>*.jar</include> </includes> <outputDirectory>lib</outputDirectory> </fileSet> <fileSet> <directory>${basedir}/src/main/</directory> <includes> <include>resources/**</include> </includes> <outputDirectory>/</outputDirectory> </fileSet> </fileSets> <dependencySets> <dependencySet> <outputDirectory>lib</outputDirectory> <useProjectArtifact>false</useProjectArtifact> </dependencySet> </dependencySets> </assembly>
Ajout aux réponses précédentes, vous pouvez également copier un fichier de chemin personnalisé vers un répertoire spécifique avec des ressources de copie Maven. ( bien que ce ne soit pas suggéré, idéalement le em>)