我使用maven-resource-plugin來過濾我的maven項目中的一些資源。在我父項目我有:在maven中配置不同文件類型的編碼?
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
在一個次級項目中,我有一個test.properties文件,該文件是一個純java properties file默認編碼= ISO-8859-1。該文件包含:
aboutText=Version ${project.version} © 2012 blabla
要正確確保該文件過濾器我已在Maven的資源插件分成單獨處決各有其編碼:
<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>
這種矯枉過正,似乎和我有一種感覺我要麼沒有正確使用插件,要麼以另一種方式處理這個問題。也許堅持直接在屬性文件中編碼特殊字符:
aboutText=Version ${project.version} \u00a9 2012 blabla
?
您是否考慮編寫自己的maven插件? (可能有使用螞蟻插件的選項,但這只是一個猜測) – wemu
你確定你必須爲屬性文件做額外的部分? 我認爲僅用於源代碼,而屬性文件是資源,因此沒有源代碼。 –
hennr
'project.build.sourceEncoding'實際上適用於'maven-resources-plugin',請參閱https://maven.apache.org/plugins/maven-resources-plugin/xref/org/apache/maven/plugin/resources/ ResourcesMojo.html#69,'encoding'的默認值是'project.build.sourceEncoding' –