Отключить фильтрацию ресурсов для maven-remote-resources-plugin
Я пытаюсь использовать плагин maven-remote-resources-plugin для совместного использования нескольких ресурсов между модулями в многомодульном проекте maven. К сожалению, общие двоичные ресурсы повреждаются во время пакетирования, предположительно из-за фильтрации.
Я уверен, что на этом этапе происходит повреждение, так как при извлечении jar общих ресурсов из моего локального репозитория содержатся битые двоичные файлы.
Есть ли отключить фильтрацию для maven-remote-resources-plugin?
На данный момент пом в моем модуле общих ресурсов выглядит так
<build>
<plugins>
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>bundle</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>**/*</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
3 ответа
Похоже, что ресурсы повреждены во время связывания. Поскольку ресурсный проект - это просто фляга, он выполняет resources
плагин как часть жизненного цикла по умолчанию. Попробуйте добавить это в POM проекта ресурса.
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>default-resources</id>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>exe</nonFilteredFileExtension>
<nonFilteredFileExtension>dontFilterMeEither</nonFilteredFileExtension>
</nonFilteredFileExtensions>
[...]
</configuration>
</execution>
</executions>
</plugin>
Документы описывают, какие двоичные файлы по умолчанию остаются нефильтрованными; Конфигурация выше добавляет расширения в список.
Ты пробовал:
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>process-remote-resources</id>
<goals>
<goal>process</goal>
</goals>
<configuration>
<useDefaultFilterDelimiters>false</useDefaultFilterDelimiters>
[...]
</configuration>
</execution>
</executions>
</plugin>
Подход, который мы выбрали для решения этой проблемы, приведен ниже.
Примечание. Я неправильно понял ответ пользователя user944849, поэтому не проверял его, и он может работать.
Мы создали JAR-файл в локальном репозитории напрямую, используя предложение ресурсов в разделе общих ресурсов. Я думаю, что это с помощью maven-resources-plugin (?).
Затем использовал плагин maven-dependency-plugin, чтобы распаковать его во временный каталог, и отфильтровал нужные ресурсы в предложении ресурсов в ресурс-потребителе pom.
разделяемые-ресурсы
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
Ресурс-потребитель
<build>
<resources>
<resource>
<directory>${project.build.directory}/shared-resources</directory>
<includes>
<include>theOnlyOneIWant.properties</include>
</includes>
</resource>
</resources>
[...]
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>shared-resources</id>
<goals>
<goal>unpack-dependencies</goal>
</goal>
<phase>generate-resources</phase>
<configuration>
<includeGroupIds>myProjectGroup</includeGroupIds>
<includeArtifactIds>myProjectSharedResources</includeArtifactIds>
<outputDirectory>$project.build.directory}/shared-resources</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Это может работать не во всех случаях, когда можно использовать плагин maven-remote-resources-plugin, но это работает для нас и решает проблему повреждения двоичных ресурсов.