web-dev-qa-db-fra.com

erreur de maven-resources-plugin à l'aide de l'objectif copy-resources: 'resources', 'outputDirectory' manquant ou invalide

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>

16
Andy Dennie

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 ..). 

30
Manfred Moser

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>
9
Raghuram

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!

0
childno͡.de