2011-01-23 1 views
1

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

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

или

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

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

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

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

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

+0

У вас есть профиль по умолчанию, который имеет эти свойства? Кроме того, вы попробовали «tomcat: run-war», вы потеряете «горячую» замену, может быть. – Nishant

+0

@Nishant Да, есть настройка профиля с определенными свойствами. Да, я попробовал «tomcat: run-war», и я действительно потерял «горячую» замену (технически, «горячая замена» все еще работала, но я вернулся в свою оригинальную лодку, свойства не были заменены). –

+0

Это странно. Я думал, что использование ' true' должно работать. – Nishant

ответ

1

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

Для Javascript, я ставлю все, что должно быть отфильтрованы в один Константы файл:

// Constants.js 

var BASE_URL = '${contextRoot}'; 

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

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

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

Если вы используете затмение с М2Э и М2Э-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)

+0

Демо великолепно! –