web-dev-qa-db-fra.com

Copie de plusieurs répertoires de ressources dans des répertoires cibles indépendants avec maven

Le plugin ressources Maven :

Cet objectif nécessite que vous configuriez les ressources à copier et que vous spécifiiez outputDirectory.

Copiez deux répertoires de ressources externes (ou plus) dans la variable basedir dans le répertoire de sortie de la construction à l'aide de maven (voir blah et uggh).

${basedir}/ 
  - pom.xml
  - blah/
  - uggh/
  - src/
    - main/..
    - test/..
  - target/
    - classes/..
    - blah/
    - uggh/

Par exemple, étant donné la structure de répertoire ci-dessus, copiez blah et uggh dans le répertoire cible à l'aide de maven. Il est facile de copier l’un ou l’autre, cependant, le plugin n’accepte qu’un seul outputDirectory. Si vous spécifiez le répertoire target et les deux répertoires en tant que ressources, le contenu de chaque répertoire est alors copié dans target, mais pas les répertoires eux-mêmes.

L'utilisation supplémentaire du plugin écrase l'initiale. De plus, j'ai essayé de spécifier l'intégralité de la basedir et d'inclure uniquement les répertoires souhaités. Cela ne copie rien.

Voici un exemple de copie d'un seul répertoire:

  <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
      <execution>
        <id>copy-resources</id>
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/target/blah</outputDirectory>
          <resources>
            <resource>
                <directory>blah</directory>
                <filtering>true</filtering>
            </resource>
          </resources>
        </configuration>
      </execution>
    </executions>
  </plugin>
42
bnjmn

C'est ici que le fichier se termine:

<outputDirectory>${basedir}/target/blah</outputDirectory>

C'est d'où il est copié:

<directory>src/main/otherresources</directory>

Il y aurait une balise <include> ou <includes> pour indiquer le nom du fichier

Multiples

Vous avez besoin de plusieurs <execution>s avec différents <id>s pour plusieurs dossiers:

  <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
      <execution>
        <id>copy-resources-1</id>
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/target/blah</outputDirectory>
          <resources>
            <resource>
                <directory>blah</directory>
                <filtering>true</filtering>
            </resource>
          </resources>
        </configuration>
      </execution>
      <execution>
        <id>copy-resources-2</id>
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/target/ughh</outputDirectory>
          <resources>
            <resource>
                <directory>ughh</directory>
                <filtering>true</filtering>
            </resource>
          </resources>
        </configuration>
      </execution>
    </executions>
  </plugin>
72
Lee Meador

Pour moi celui-ci fonctionne bien dans Maven 3:

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <executions>
                <execution>
                    <id>custom-resources</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                        <resources>                                        
                            <resource>
                                <targetPath>${basedir}/target/blah</targetPath>
                                <directory>blah</directory>
                                <filtering>true</filtering>
                            </resource>             
                            <resource>
                                <targetPath>${basedir}/target/uggh</targetPath>
                                <directory>uggh</directory>
                                <filtering>false</filtering>
                            </resource>              
                        <encoding>UTF-8</encoding>
                    </configuration>            
                </execution>
            </executions>
        </plugin>
13
Boris Biryuchkov

C'est la solution la plus simple que j'ai trouvée et ça marche ...

<build>
    <plugins>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.7</version>
            <configuration>   
            </configuration>
        </plugin>
    </plugins> 
    <resources>
        <resource>
            <directory>${basedir}/src/main/Java/org/mc2/mymusic/gui/main/Menu/resources</directory>
            <targetPath>${basedir}/target/classes/org/mc2/mymusic/gui/main/Menu/resources</targetPath>
            <filtering>false</filtering>
        </resource>
    </resources>  
</build>

Marco

9
Marcoc1712

Vous pouvez utiliser des modèles de style fourmi

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.7</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}</outputDirectory>
                <resources>
                    <resource>
                        <directory>${basedir}</directory>
                        <includes>
                            <include>blah/**</include>
                            <include>uggh/**</include>
                        </includes>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
5
Ricardo Veloso

En lisant votre exemple, je ne pense pas que vous deviez inclure et configurer le plug-in maven-resource-plugin . Ajoutez simplement ces éléments de ressource à la balise <build><resources/>-. Voir http://maven.Apache.org/ref/3.1.1/maven-model/maven.html#class_resource quelles autres balises vous pouvez utiliser.

2
Robert Scholte
    <resources>
        <resource>
              <directory>${basedir}/src/scripts</directory>
              <includes>
                  <include>data-octopus.ps1</include>
              </includes>
              <targetPath>${basedir}/target/data</targetPath>
        </resource>
        <resource>
              <directory>${basedir}/src/scripts</directory>
              <includes>
                  <include>service-octopus.ps1</include>
              </includes>
              <targetPath>${basedir}/target/service</targetPath>
        </resource>
    </resources>

    </plugins>
        ...
    </plugins>
1
hit3k