Uso lo maven-resource-plugin per filtrare alcune risorse nel mio progetto di maven. Nel mio progetto principale ho:Configura la codifica per diversi tipi di file in Maven?
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
In un progetto sub Ho un test.properties di file che è una pianura java properties file con metodo di codifica predefinito = ISO-8859-1. Questo file contiene:
aboutText=Version ${project.version} © 2012 blabla
per assicurarsi che i filtri questo file correttamente Ho diviso l'esperto di risorse-plugin in esecuzioni separati ognuno con la codifica:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>ico</nonFilteredFileExtension>
<nonFilteredFileExtension>jar</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
<executions>
<execution>
<id>filter-properties-files</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- java properties files are encoded in ISO-8859-1 so when
filtering those files we stick with that encoding. -->
<encoding>ISO-8859-1</encoding>
<outputDirectory>${basedir}/after</outputDirectory>
<resources>
<resource>
<filtering>true</filtering>
<directory>${basedir}/before</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>filter-non-properties-files</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<outputDirectory>${basedir}/after</outputDirectory>
<resources>
<resource>
<filtering>true</filtering>
<directory>${basedir}/before</directory>
<includes>
<include>**/*.product</include>
<include>**/*.inf</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Questo sembra eccessivo e ho la sensazione che non sto usando il plugin correttamente o che questo problema dovrebbe essere gestito in un altro modo. Forse attenersi alla codifica di caratteri speciali direttamente nei file delle proprietà:
aboutText=Version ${project.version} \u00a9 2012 blabla
?
hai pensato di scrivere il tuo plugin Maven per questo? (potrebbero esserci opzioni che usano il plugin ant ma è solo un'ipotesi) – wemu
Sei sicuro di dover fare la sezione extra per i file delle proprietà? Ho pensato che è solo per il codice sorgente, mentre i file delle proprietà sono risorse e quindi nessun codice sorgente. –
hennr
'project.build.sourceEncoding' in realtà si applica a' maven-resources-plugin', vedere https://maven.apache.org/plugins/maven-resources-plugin/xref/org/apache/maven/plugin/resources/ ResourcesMojo.html # 69, il valore predefinito per 'encoding' è' project.build.sourceEncoding' –