Используя плагин maven-remote-resources-plugin и указав каталог resourcesDirectory
Я пытаюсь переопределить каталог ресурсов по умолчанию (src/main/resources) при использовании плагина maven-remote-resources-plugin. Однако указанное значение в приведенном ниже примере не принимается во внимание. Был бы признателен, если бы кто-то мог дать мне несколько советов.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.resource.library</groupId>
<artifactId>resource-library</artifactId>
<version>1.0</version>
<name>ResourceLibrary</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>bundle</goal>
</goals>
</execution>
</executions>
<configuration>
<resourcesDirectory>${basedir}/common</resourcesDirectory>
<includes>
<include>**/*</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</project>
РЕДАКТИРОВАТЬ: мне интересно, если это ошибка в плагине, так как я вижу следующее в выводе DEBUG сборки, что подразумевает, что он пытается использовать правильный каталог ресурсов. Ничего другого значимого не появляется в результатах отладки.
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-remote-resources-plugin:1.5:bundle' with basic configurator -->
[DEBUG] (f) includes = [**/*]
[DEBUG] (f) outputDirectory = C:\jit\workspace\ResourceLibrary\target\classes
[DEBUG] (f) resourcesDirectory = C:\jit\workspace\ResourceLibrary\common
РЕДАКТИРОВАТЬ: Я думаю, что это на самом деле может быть ошибка, поэтому подняли: MRRESOURCES-96
2 ответа
Зачем вам нужен плагин maven-remote-resources-plugin?
Если ваша цель заключается в override the default resources directory
, тогда вы можете использовать mvn resources: copy-resources, так как он более гибкий. Пример здесь.
альтернатива
Вы также можете использовать resources
Цель, предоставляемая плагином ресурсов, и указать ресурсы в блоке файла pom. Пример тут.
редактировать
О плагине maven-remote-resources-plugin смотрите на странице использования:
Это запустит сканирование каталога $basedir/src/main/resources этого проекта и создаст файл манифеста $basedir/target/classes/META-INF/maven/remote-resources.xml.
Это означает, что этот плагин создаст remote-resources.xml
файл, но это не значит, что он будет копировать ресурсы для вас.
Я создал пустой проект maven с использованием конфигурации вашего плагина, и он действительно создал файл remote-resources.xml. Кроме того, он не копировал файлы в ${basedir}/common
Для этого просто укажите ресурсы в разделе сборки. Пример:
<build>
<resources>
<resource>
<directory>${basedir}/common</directory>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>bundle</goal>
</goals>
</execution>
</executions>
<configuration>
<resourcesDirectory>${basedir}/common</resourcesDirectory>
<includes>
<include>**/*</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
kly прав в том, что не копирует ресурсы для вас (извиняюсь, пока не могу комментировать - недостаточно репутации).
С целью "связки" вы только генерируете манифест со списком включенных ресурсов. Манифест должен быть упакован в артефакт вместе с самими ресурсами, что произойдет только в вашем случае, если вы также используете copy-ресурсы для помещения их в каталог target / classes.
Затем вы должны использовать цель "process" и перечислить свой пакет в любом другом проекте, из которого вы хотите использовать ресурсы.