2012-05-30 2 views
2

Я использую Maven для создания HTML-webapp. У меня есть один профиль для отладки и другой профиль для выпуска. В профиле отладки я хотел бы иметь сжатый Javascript, используемый на странице HTML, но в профиле выпуска я объединяю все файлы Javascript, а затем сжимаю их с помощью компилятора Googles Closure.Создайте HTML-страницу во время сборки maven

Итак, у меня есть 2 списка файлов Javascript, которые мне нужно записать как <script> теги в HTML-страницу, исходя из того, какой профиль выбран.

Есть ли плагин Maven, который я мог бы настроить с разными списками для разных профилей, которые могли бы при необходимости генерировать HTML-файл?

ответ

2

После долгих исследований я определил, что лучше всего было написать свой собственный плагин maven. У меня есть простой .html шаблон, который содержит директивы о том, где вставить CSS и JS-теги в HTML:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Fifa Social - Hello World</title> 
    <meta name="description" content="Hello World app for Fifa Social"> 

    <meta name="viewport" content="width=device-width"> 

    $cssIncludes$ 
    $jsIncludes$ 

</head> 
<body> 
    <p>Page content</p> 
</body> 
</html> 

Я тогда плагин Maven, который работает в фазе «генерировать-источники» жизненного цикла Maven, который принимает шаблон и заменяет $cssIncludes$ и $jsIncludes$ соответствующим списком <script> и <link> тегов. (Примечание: я использую библиотеку Java antlr stringtemplate в качестве зависимости для моего плагина).

Я не могу отправить фактический плагин, поскольку он является собственностью проекта, но это единственный класс Java, который простирается от AbstractMojo

  • имеет @parameter свойства на чтение <configuratioon> из POM
    • расположение шаблона HTML
    • расположение выходного файла
    • список JS файлов
    • контрольный список из CS S файлы
  • во время выполнения его
    • читает шаблон HTML из файла и сохраняет это как строка
    • создает org.antlr.stringtemplate.StringTemplate из шаблона HTML
    • , используя по умолчанию org.antlr.stringtemplate.language.DefaultTemplateLexer.
    • петли через файлы JS и CS от конфигурации, создающей <script> и <link> метки как строки
    • использует template.setAttribute связать встроенную строку $ cssIncludes $ и $ jsIncludes $
    • пишет шаблон для системы файлов

Это работает очень хорошо. Я просто отправляю другой список файлов JS и CSS в плагин на основе текущего профиля Maven.

0

Основанный на коротком поиске через Google i found a Maven Plugin, который может использоваться для сжатия. Поэтому, исходя из этого, нет проблем с тем, чтобы разные профили, как вы уже упоминали, сжимали или не сжимали или просто оставляли файлы без сжатия.

+0

Это не проблема сжатия - это создает правильный тег '