Das Maven Encoding Plugin ist ein Maven Plugin für das Encoding von Sonderzeichen bei gleichzeitigem Ersetzen von Variablen. Das Plugin ist verfügbar im Maven Central.

Hintergrund#

Mit den mitgelieferten Maven Plugins ist es zwar möglich, Ressourcen zu kopieren und Variablen zu ersetzen. Dies wird als sogenanntes Resource Filtering bezeichnet. Darüber hinaus gibt es Plugins für das Encoding von Zeichen, diese können jedoch keine Zeichen ersetzen. Das Maven Encoding Plugin vereinigt beide Vorgänge.

Anwendung#

Der typische Anwendungsfall sind in UTF-8 codierte Java Properties.

Beispiel#

Folgender Eintrag in der pom.xml des Projekts kopiert alle Properties-Dateien aus src/main/resources nach target/properties, codiert und filtert diese:
<build>
	<resources>
		<resource>
			<directory>src/main/resources</directory>
			<excludes>
				<exclude>**/*.properties</exclude>
			</excludes>
			<filtering>true</filtering>
		</resource>
	</resources>
        <plugins>
		<plugin>
			<groupId>com.intersult</groupId>
			<artifactId>encoding-maven-plugin</artifactId>
			<version>1.2-SNAPSHOT</version>
			<executions>
				<execution>
					<goals>
						<goal>encode</goal>
					</goals>
					<configuration>
						<encoding>iso-8859-1</encoding>
						<src>${basedir}/src/main/resources</src>
						<includes>**/*.properties</includes>
						<resource>
							<directory>${project.build.directory}/properties</directory>
							<filtering>true</filtering>
						</resource>
					</configuration>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

Erklärung: Zunächst werden die Resources unter src/main/resources so konfiguriert, dass Properties-Dateien ausgeschlossen werden (exclude). Anschließend werden diese über das Maven Encoding Plugin auf ISO-8859-1 codiert und nach target/properties abgelegt. Dieses Verzeichnis wird automatisch zu den Resources hinzugefügt, sodass diese dann im fertigen Package erscheinen.