J'essaie d'utiliser le plugin maven-resources pour effectuer un filtrage en utilisant l'objectif copy-resources, et j'ai rencontré l'erreur suivante:
Failed to execute goal org.Apache.maven.plugins:maven-resources-plugin:2.5:copy-resources (default-cli) on project bar: The parameters 'resources', 'outputDirectory' for goal org.Apache.maven.plugins:maven-resources-plugin:2.5:copy-resources are missing or invalid
Pour isoler le problème, j'ai créé un pom.xml très simple, copié presque textuellement de http://maven.Apache.org/plugins/maven-resources-plugin/examples/copy-resources.html , ran et a la même erreur.
Je l'invoque avec
mvn resources:copy-resources
Des idées? Voici le test pom.xml.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/extra-resources</outputDirectory>
<resources>
<resource>
<directory>src/non-packaged-resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Le principal problème que vous avez eu est que vous appelez l'objectif du plug-in directement à l'aide de
mvn resources:copy-resources
qui ne crée pas nécessairement le répertoire de sortie. Appelez plutôt la phase de cycle de vie Maven appropriée.
mvn process-resources
Pour une liste complète des phases du cycle de vie, exécutez la commande mvn sans rien.
En général, il est presque toujours préférable d’invoquer directement une phase du cycle de vie plutôt qu’un objectif car cela garantit que toutes les conditions préalables sont remplies (par exemple, ne pas compiler les classes de test avant les classes à tester ..).
Vérifiez si @bmargulies answer fonctionne pour vous. Vous pouvez vous référer à ces exemples .
Dans tous les cas, vous n'avez pas besoin d'utiliser <pluginManagement>
pour y parvenir. <pluginManagement>
est utilisé dans les scénarios multi-modules pour faciliter l'héritage des configurations plugin
.
Vous devez déplacer l'élément configuration
de l'élément execution
. L'extrait suivant fonctionne.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<outputDirectory>${basedir}/target/extra-resources</outputDirectory>
<resources>
<resource>
<directory>src/non-packaged-resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Supprimez simplement les exécutions et leur configuration. Normalement, vous pouvez définir les ressources dans <build> > <resources>
et <build> > <testResources>
(voir http://maven.Apache.org/plugins/maven-resources-plugin/examples/resource-directory.html ) directement hors de la configuration du plugin à l'aide de le cycle de vie par défaut process-(test-)resources
qui est automatiquement accroché par copy-(test-)resources.
. Oui, c'est un mauvais exemple sur leur page!