我有一个maven项目。在/src/main/resources/
我有两个文件foo.properties
和bar.xml
。第一个用ISO-8859-1编码,第二个用UTF-8编码。
是否有一种简单的方法可以在不破坏编码的情况下对两个文件进行过滤?
据我所知,我无法在<resource>
块中指定编码。似乎只能为插件本身指定编码,但这会导致两个文件都使用相同的编码进行过滤。
理想情况下,我想指定类似的内容:
这不是一种非常不寻常的情况,是否有一种简单的方法来配置它?
答案 0 :(得分:1)
首先,我建议将基于iso的资源放入不同的目录,如src/main/iso-resources
,并使用类似的内容:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<name>Resource Test</name>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-iso-part</id>
<goals><goal>copy-resources</goal></goals>
<phase>process-resources</phase>
<configuration>
<encoding>ISO-8859-1</encoding>
<resources>
<resource>
<directory>src/main/iso-resources/</directory>
</resource>
</resources>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
答案 1 :(得分:0)
如果您不想将资源保存在单独的目录中,也可以将它们保存在默认目录src/main/resources
中,并使用排除项。
这个想法是:
nonFilteredFileExtensions
将不应过滤的build/resources
配置中排除不使用此编码的文件includes
仅选择目标文件的目标“ copy-resources”的执行此示例仅处理.properties,但您可以轻松地概括一下:
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>application*.properties</exclude>
</excludes>
<filtering>true</filtering>
</resource>
</resources>
...
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
<executions>
<execution>
<id>properties</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>ISO-8859-1</encoding>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application*.properties</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>