Tôi sử dụng maven-resource-plugin để lọc một số tài nguyên trong dự án của tôi. Trong dự án cha mẹ của tôi, tôi có:Định cấu hình mã hóa cho các loại tệp khác nhau trong maven?
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
trong một dự án phụ Tôi có một test.properties tập tin mà là một đồng bằng java properties file với mã hóa mặc định = ISO-8859-1. Tập tin này chứa:
aboutText=Version ${project.version} © 2012 blabla
Để đảm bảo bộ lọc tập tin này một cách chính xác tôi đã chia maven-tài nguyên-plugin vào hành riêng biệt mỗi mã hóa của nó:
<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>
Điều này có vẻ quá mức cần thiết và tôi có cảm giác rằng tôi không sử dụng đúng plugin hoặc vấn đề này sẽ được xử lý theo cách khác. Có thể gắn mã hóa các ký tự đặc biệt trong các tệp thuộc tính trực tiếp:
aboutText=Version ${project.version} \u00a9 2012 blabla
?
bạn có cân nhắc viết plugin maven của riêng mình cho điều này không? (có thể có các tùy chọn bằng cách sử dụng các plugin kiến nhưng đó chỉ là một dự đoán) – wemu
Bạn có chắc chắn rằng bạn phải làm phần bổ sung cho các tập tin thuộc tính? Tôi nghĩ chỉ dành cho mã nguồn, trong khi các tệp thuộc tính là tài nguyên và do đó không có mã nguồn. –
hennr
'project.build.sourceEncoding' thực sự áp dụng cho' maven-resources-plugin', xem https://maven.apache.org/plugins/maven-resources-plugin/xref/org/apache/maven/plugin/resources/ Tài nguyênMojo.html # 69, giá trị mặc định cho 'encoding' là' project.build.sourceEncoding' –