This answer décrit comment étendre les propriétés-maven-plugin pour permettre aux fichiers de propriétés d'être partagés entre les projets. Si vous utilisez ce plugin, les propriétés seront mises à la disposition de la construction, et peuvent donc être utilisées lors du filtrage des ressources. Alternativement, vous pouvez spécifier un fichier de filtre en tant qu'artefact attaché sur une construction, afin qu'il soit disponible dans le référentiel, puis utiliser le plugin de dépendance pour télécharger le fichier de filtre, enfin spécifier que le filtre utilise le fichier partagé.
Pour fixer le filtre à votre génération parent, utilisez le but de joindre build-helper-maven-plugin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>src/main/resources/shared-filter.properties</file>
<type>properties</type>
<classifier>filter</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
Lorsque le projet d'accueil du filtre est déployé, le filtre sera maintenant attaché à côté.
Pour télécharger le fichier de filtre dans votre projet, utilisez l'objectif copie-dépendances de maven-dependency-plugin pour télécharger le fichier:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>generate-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>name.seller.rich</groupId>
<artifactId>shared</artifactId>
<version>1.0.0</version>
<classifier>filter</classifier>
<type>properties</type>
<overWrite>false</overWrite>
<destFileName>shared-filter.properties</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>
${project.build.directory}/filters
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
Si la configuration du plug-in de dépendance est définie dans votre projet parent, tous les autres projets peuvent hérite de la configuration et n'aura pas besoin de la redéfinir.
Ensuite, utiliser le filtre téléchargé:
<filters>
<filter>${project.build.directory}/filters/shared-filter.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
+1 Bonne réponse Rich. Jamais entendu parler de cela: http://www.mail-archive.com/[email protected]/msg00202.html? –
Merci Rich, ça devrait marcher pour moi. Pas tout à fait aussi simple que j'avais espéré bien :) – David
J'ai essayé la solution ci-dessus, cela fonctionne partiellement. quand j'essaye de faire mvn install il copie les ressources mais à la fin il essaye aussi de les déployer dans le dépôt et pendant ce temps il cherche la ressource dans src/main/resource du sous-module et j'obtiens l'exception suivante – user373201