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

ldioqlga  于 2023-01-20  发布在  Maven
关注(0)|答案(4)|浏览(229)

我正在使用maven资源插件从我的项目中复制一些资源,但是我的一个资源是二进制文件。输出说它是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转换吗?
谢谢你。

elcex8rz

elcex8rz1#

为了解决我的问题,我把这个添加到我的配置maven binary filtering

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

dtcbnfnu2#

设置两个单独的<resource>元素,一个使用<filtering>false</filtering>,另一个使用<filtering>true</filtering>。使用<resource><includes><excludes>元素,通过扩展名从其中一个元素中排除二进制文件。
然而资源插件在默认情况下会越来越聪明地排除图像,所以请确保您使用的是最新版本。

xpszyzbs

xpszyzbs3#

我遇到过类似的情况,一个二进制文件(以及混合的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>
vfhzx4xs

vfhzx4xs4#

对于没有扩展名的编译二进制文件(它在RHEL构建服务器上启动以进行一些组件测试),添加一个Linux版本的文件扩展名,并使用code-gijoe上面的答案来确保maven不会“过滤”它:

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

相关问题