2.7.2008 Resource-Bundles automatisch von UTF-8 nach Quoted-ASCII konvertieren

Java Resource-Bundles (i.d.R. *.properties) müssen in ISO-8859-1 bzw. Quoted-ASCII erstellt sein. XML- und Java-Dateien dahin gegen hält man heute meist in UTF-8. In einem Projekt, in dem jeder Entwickler mit einer grafischen Entwicklungsumgebung arbeitet, die man so konfigurieren kann, dass jeweils der richtige Zeichensatz verwendet wird, ist das kein Problem.

Was aber, wenn einige Entwickler mit einfachen Editoren arbeiten? Zu schnell passiert es, dass vergessen wird, den Zeichensatz anzupassen und schon hat man Zeichensatzsalat.

Sowohl mit ant als auch mit Maven gibt es eine Lösung: Man konvertiert die Ressource-Bundles einfach automatisch von UTF-8 nach Quoted-ASCII und schon kann man jede Quelldatei immer mit UTF-8 bearbeiten.

Für Maven hilft hier das Plugin native2ascii-maven-plugin, welches in der pom.xml des jeweiligen Projektes konfiguriert werden muss:

<project>

    ...

    <build>
    <finalName>...</finalName>

    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>native2ascii-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>native2ascii</goal>
                    </goals>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <dest>target/classes</dest>
                        <includes>**/*.properties</includes>
                        <src>src/main/resources</src>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
...
</project>

Bei der Konfiguration werden dann alle *.properties-Dateien unterhalb von src/main/resources nach target/classes konvertiert, wobei der Quell-Zeichensatz UTF-8 ist.

Mit ant kann man ähnliches z.B. so erreichen:

<native2ascii encoding="UTF-8"
    dest="${build.home}/war/WEB-INF/classes"
    src="${src.home}/war/WEB-INF/classes" includes="*.properties"/>

Da es bei ant keine vorgegebenen Verzeichnisstruktur gibt, muss diese ggf. angepasst werden.

VN:F [1.9.22_1171]
Rating: 4.5/5 (2 votes cast)
Resource-Bundles automatisch von UTF-8 nach Quoted-ASCII konvertieren, 4.5 out of 5 based on 2 ratings