Как избежать кодировки 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>