如何避免使用maven-resources-plugin对二进制文件进行UTF-8编码?

时间:2011-04-27 15:43:23

标签: maven-2 utf-8 maven maven-plugin maven-3

我正在使用maven-resources-plugin从我的项目中复制一些资源,但我的一个资源是二进制文件。输出结果显示Using 'UTF-8' encoding to copy filtered resources我的问题!!!

这是我的插件配置。

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <!-- here the phase you need -->
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/autopublisher</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/autopublisher</directory>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

我可以跳过二进制文件的UTF-8转换吗?

谢谢。

4 个答案:

答案 0 :(得分:19)

为了解决我的问题,我将其添加到我的配置maven binary filtering

<nonFilteredFileExtensions>                            
    <nonFilteredFileExtension>dcm</nonFilteredFileExtension>
</nonFilteredFileExtensions>

答案 1 :(得分:3)

设置两个单独的<resource>元素,一个使用<filtering>false</filtering>,另一个使用<filtering>true</filtering>。使用<includes>的{​​{1}}和<excludes>元素,通过扩展名从其中一个元素中排除二进制文件。

然而,资源插件在排除例如默认情况下,请确保使用最新版本。

答案 2 :(得分:2)

我遇到了类似的情况,其中插件无意中处理了二进制文件(以及txt和二进制数据的混合),使其最终无法使用。

为了解决这个问题,我只需要更明确地过滤哪些类型的文件来过滤和保留所有其他文件,不受影响,见下文:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>filter-config-files</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration><outputDirectory>${project.build.directory}/config-filtered</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${project.build.directory}/nar/${project.name}-${project.version}-noarch</directory>

                                <!-- enabling filetering ONLY on these file types --> 
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>**/*.xml</include>
                                        <include>**/*.sh</include>
                                    </includes>
                                </resource>
                                <resource>
                                    <directory>${project.build.directory}/nar/${project.name}-${project.version}-noarch</directory>
<!-- now excluding filtering on ALL OTHER file types but still including them in the archive -->
                                            <filtering>false</filtering>
                                            <includes>
                                                <include>**/*</include>
                                            </includes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

答案 3 :(得分:1)

对于没有扩展的已编译二进制文件(它在RHEL构建服务器上启动以进行某些组件测试),为其打算运行的Linux版本添加了文件扩展名并使用了code-gijoe的答案以上确保maven没有&#34;过滤&#34;它:

<nonFilteredFileExtensions>                            
    <nonFilteredFileExtension>rhel</nonFilteredFileExtension>
</nonFilteredFileExtensions>