Maven webresources фильтрации на лету
-
23-10-2019 - |
Вопрос
Я использую Maven-War-Plugin для фильтрации некоторых ресурсов в Web-Inf. В основном вещи статические вещи, такие как:
var url = ${contextRoot}/save.json;
или же
<link href="static/css/layout-${buildNumber}.css"/>
Все работает фантастически. Моя проблема в том, что он создал кошмар разработки. Обычно я горячо развернут на местном Tomcat, и моя IDE обрабатывает копирование изменений (при сохранении) в целевой каталог. Но когда это произойдет, я получаю буквальную $ {свойство} в моем файле вместо того, что было изначально заменено военным плагином. Я бы предпочел тестировать представление/статические изменения ресурса на лету вместо перераспределения для каждого изменения.
Я перепутал с плагином Tomcat, чтобы запустить его, но когда я использовал это, фильтрация ресурсов не произойдет, если я не использую его для развертывания, и в этом случае я теряю возможности горячей замены.
Я использую Spring, и я был бы в порядке с использованием тем, фильтрации свойств темы, а затем использовал их для замены значений, на мой взгляд. Но как насчет JS/CSS/других статических вещей?
Есть ли способ иметь военный плагин «фильтр на лету»? Кто -нибудь может порекомендовать лучший способ сделать то, что я пытаюсь сделать? Я чувствую, что я смотрел на это слишком долго и имею туннельное зрение по этому поводу.
Решение 2
В конце концов я сохранил те же методы, но изменил свой подход для достижения этого.
Для JavaScript я положил все, что нужно отфильтровать в один файл константов:
// Constants.js
var BASE_URL = '${contextRoot}';
Причина этого в том, что Constants.js
Файл будет очень редко изменен и избегает проблемы с перераспределением этого файла на лету.
Другим примером было использование ${buildNumber}
Чтобы избежать кэширования ресурсов браузера между развертываниями. Я обнаружил, что добавление номера сборки к строке запроса работал так же хорошо:
<link href="static/css/layout.css?${buildNumber}"/>
Другие советы
Если вы используете Eclipse с M2E и M2E-WTP, вы можете получить фильтрацию веб-ресурсов на лету. Это объяснено здесь: https://community.jboss.org/en/tools/blog/2011/05/03/m2eclipse-wtp-0120-new-noteworthy
И демо -там: http://bit.ly/wgcd4j
Обратите внимание, что в этом видео пользовательский интерфейс Maven Profile Management поступает из JBOSS Tools 3.3.0.Beta1 (http://docs.jboss.org/tools/whatsnew/maven/maven-news-3.3.0.beta1.html )