Почему maven-war-plugin игнорирует мои настроенные фильтры для веб-ресурсов?

У меня есть файл фильтра в src/main/filters/base.properties с содержимым:

testProperty=testValue

В моем POM определены ресурсы, фильтрация и дополнительные веб-ресурсы (с использованием плагина maven-war). Он также переопределяет разделитель фильтрации по умолчанию.

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <filters>
        <filter>src/main/filters/base.properties</filter>
    </filters>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
                <overwrite>true</overwrite>
                <useDefaultDelimiters>false</useDefaultDelimiters>
                <delimiters>
                    <delimiter>@</delimiter>
                </delimiters>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <directory>src/main/more-web-resources</directory>
                        <filtering>true</filtering>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>

Вся фильтрация отлично работает для файлов, расположенных в src/main/resources. Однако файл конфигурации, расположенный в src/main/more-web-resources, не фильтруется должным образом. Итак, если у меня есть файл src/main/more-web-resources/test.properties с содержимым:

finalTestProperty=@testProperty@

Окончательный файл src/main/webapp/test.properties выглядит так:

finalTestProperty=@testProperty@

В отличие от:

finalTestProperty=testValue

Таким образом, фильтрация просто не работает для дополнительных веб-ресурсов, указанных с помощью плагина maven-war-plugin. Что мне не хватает?


person MegaMatt    schedule 09.01.2018    source источник
comment
Вероятно, содержимое more-web-resources должно быть под src/main/resources.   -  person tsolakp    schedule 10.01.2018
comment
Это не так, и так задумано. Наличие другого каталога веб-ресурсов позволяет мне использовать больше файлов непосредственно в папке веб-приложения для различных конфигураций сборки. Помещение их под src/main/resources будет означать, что они окажутся в WEB-INF/classes, чего я не хочу. Я хочу их прямо в ВОЙНЕ.   -  person MegaMatt    schedule 10.01.2018
comment
фильтрация также настраивается в разделе конфигурации военного плагина. другой раздел в pom относится только к плагину ресурсов, если я правильно помню. В документации плагина есть хороший пример: maven.apache.org/plugins/maven-war-plugin/examples/   -  person wemu    schedule 10.01.2018
comment
Затем попробуйте определить другой каталог ресурсов: <resource><directory>src/main/more-web-resources</directory></resource>   -  person tsolakp    schedule 10.01.2018
comment
Мне действительно нужно дублировать раздел фильтров в конфигурации военного плагина? Я также использую плагин maven-properties-plugin для извлечения дополнительных файлов фильтров, поэтому я не понимаю, как это будет работать, если придется снова указывать фильтры внутри плагина.   -  person MegaMatt    schedule 10.01.2018
comment
Плагин ресурсов maven отвечает только за ресурсы загрузчика классов. Вы должны настроить любые другие плагины, которые должны выполнять копирование фильтра отдельно.   -  person Steve C    schedule 10.01.2018
comment
Я вижу, что вы настроили собственный разделитель для плагина maven-resources-plugin, но не для плагина maven-war-plugin. Не могли бы вы попробовать установить разделитель @ также для плагина maven-war?   -  person gdegani    schedule 10.01.2018


Ответы (1)


Ну вот, после ночного сна, я вернулся к нему сегодня утром, построил, и свойства фильтруются должным образом. Я убедился, что структура моего POM и проекта точно соответствует моему вопросу, и это так. Возможно, я смотрел на оригинальный test.properties, а не на собранный test.properties.

Чтобы было ясно и чтобы ответить на комментарии в вопросе, мне не нужно было определять дополнительный ресурс в разделе <resources/> для каталога more-web-resources, мне не нужно было (повторно) указывать фильтры в другом разделе <filters/> внутри maven -war-plugin, и мне не нужно было (повторно) указывать разделитель @ внутри maven-war-plugin. Все это работает так, как я изначально ожидал, используя ресурсы и фильтры, определенные в стандартных разделах POM, а также плагин maven-resources-plugin.

person MegaMatt    schedule 10.01.2018