Maven веб-ресурсы фильтрации на лету - PullRequest
1 голос
/ 23 января 2011

Я использую плагин maven-war для фильтрации некоторых ресурсов в WEB-INF.В основном такие статичные вещи, как:

var url = ${contextRoot}/save.json;

или

<link href="static/css/layout-${buildNumber}.css"/>

Все работает фантастически.Моя проблема в том, что он создал кошмар развития.Обычно я выполняю горячее развертывание на локальный томкат, и моя среда IDE выполняет копирование изменений (при сохранении) в целевой каталог.Но когда это происходит, я получаю буквально $ {свойство} в моем файле вместо того, что было изначально заменено плагином войны.Я бы предпочел тестировать изменения ресурсов вида / статики на лету, а не заново развертывать их для каждого изменения.

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

Я использую Spring, и я буду в порядке с использованием тем, фильтрацией свойств темы, а затем с помощьючтобы заменить значения на мой взгляд.Но как насчет js / css / других статических вещей?

Есть ли способ использовать военный плагин "фильтр на лету"?Кто-нибудь может порекомендовать лучший способ выполнить то, что я пытаюсь сделать?Я чувствую, что слишком долго смотрю на это и у меня есть какое-то туннельное видение по этому вопросу.

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Если вы используете eclipse с m2e и m2e-wtp, вы можете получить фильтрацию веб-ресурсов на лету. Это объясняется здесь: https://community.jboss.org/en/tools/blog/2011/05/03/m2eclipse-wtp-0120-new-noteworthy

И демо там: http://bit.ly/wGcD4j

Обратите внимание, что в этом видео пользовательский интерфейс управления профилями Maven поставляется из JBoss Tools 3.3.0.Beta1 (http://docs.jboss.org/tools/whatsnew/maven/maven-news-3.3.0.Beta1.html)

1 голос
/ 06 февраля 2012

В конце концов я сохранил те же методы, но изменил свой подход для достижения этого.

Для Javascript я поместил все, что нужно отфильтровать, в один файл констант:

// Constants.js

var BASE_URL = '${contextRoot}';

Причиной этого является то, что файл Constants.js очень редко будет изменяться и избежать проблемы повторного развертывания этого файла на лету.

Мой другой пример - ${buildNumber}, чтобы избежать кэширования ресурсов браузера при развертывании. Я обнаружил, что добавление номера сборки к строке запроса работает так же хорошо:

<link href="static/css/layout.css?${buildNumber}"/>
...