Используя плагин 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" и перечислить свой пакет в любом другом проекте, из которого вы хотите использовать ресурсы.

Другие вопросы по тегам