Как избежать кодировки UTF-8 для двоичных файлов с помощью maven-resources-plugin?

Я использую 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 для двоичных файлов?

Спасибо.

Ответ 1

Хорошо, чтобы решить мою проблему, я добавил это в свою конфигурацию бинарной фильтрации maven:

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

Ответ 2

Настройте два отдельных элемента <resource>, один с <filtering>false</filtering>, а другой с <filtering>true</filtering>. Используйте элементы <includes> и <excludes> <resource>, чтобы исключить ваши двоичные файлы по расширению из одного из них.

Плагин ресурсов, однако, становится умнее об исключении, например. по умолчанию, поэтому убедитесь, что вы используете последнюю версию.

Ответ 3

Я столкнулся с аналогичной ситуацией, когда двоичный файл (ну и соединение 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>

Ответ 4

Для скомпилированного двоичного файла, у которого не было расширения (он запускается на сервере сборки RHEL для некоторых тестов компонентов), добавлено расширение файла для версии Linux, для которой оно предназначалось для запуска, и использовало ответ на код-gijoe выше, чтобы убедиться, что maven не "фильтрует" его:

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