lundi 9 septembre 2013

Multi encoding avec le plugin resource de Maven

Par défaut, avec le plugin resource de Maven, il n'est pas possible de spécifier un encodage spécifique par ressource.
Dans la balise resources, il est uniquement possible de spécifier un seul encodage.

Il est toutefois possible de contourner le problème même si cela peut sembler un peu fastidieux.

Le plugin resources à un goal copy-resources qui permet de spécifier des ressources supplémentaires avec d'autres paramètres.
C'est là que se situe l'astuce.
Dans la balise générale resources, toutes les resources sont exclues.
Ensuite, "manuellement", les plugins resources avec le goal copy-resources est lancé avec un configuration différente pour chaque encodage.
Ainsi, un répertoire UFT8 contient les ressources avec cet encodage, idem avec le répertoire cp1252.
<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
        <excludes>
          <exclude>**/**</exclude>
        </excludes>
    </resource>
  </resources>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.6</version>
      <executions>
        <execution>
          <id>copy-resources1</id>
          <phase>process-resources</phase>
          <goals>
            <goal>copy-resources</goal>
          </goals>
          <configuration>
            <outputDirectory>${project.build.outputDirectory}</outputDirectory>
            <encoding>UTF-8</encoding>
            <resources>
              <resource>
                <directory>src/main/resources/UTF8</directory>
                <filtering>true</filtering>
              </resource>
            </resources>
          </configuration>
        </execution>
        <execution>
          <id>copy-resources2</id>
          <phase>process-resources</phase>
          <goals>
            <goal>copy-resources</goal>
          </goals>
          <configuration>
            <outputDirectory>${project.build.outputDirectory}</outputDirectory>
            <encoding>CP1252</encoding>
            <resources>
              <resource>
                <directory>src/main/resources/cp1252</directory>
                <filtering>true</filtering>
              </resource>
            </resources>
          </configuration>
        </execution>
      </executions>
    </plugin>
<build>

Aucun commentaire:

Enregistrer un commentaire