2012-04-19 2 views
3

Пальцы, пересеченные, вы можете мне помочь!Переименуйте сгенерированный файл в Maven перед построением WAR

Я использую SmartSprites, чтобы объединить PNG на моей целевой странице в одну, чтобы она загружалась быстрее.

SmartSprite проверит ваши файлы CSS, сгенерирует изображение CSS Sprite и создаст новый CSS-файл, который будет использовать этот спрайт-образ вместо оригиналов. То, что я хочу сделать, - это заменить исходный файл CSS с помощью SmartSprite автоматически во время сборки моей maven WAR.

Так вот что я хотел бы случиться:

  1. SmartSprite сканирует мой CSS файл: mystyle.css
  2. SmartSprite создать спрайт изображения, и создает новый MyStyle-sprite.css файл, который ссылается на новое изображение спрайта.
  3. Я хочу, чтобы скопировать MyStyle-sprite.css над mystyle.css перед WAR построен, так что я не должен изменить любого из моих ссылок в файлах JSP.

Оба файла находятся в каталоге вывода (target/myproj/css). В SmartSprite нет никакого флага для переопределения исходного файла, поэтому я предполагаю, что это нужно было сделать после обработки.

Ниже приведена конфигурация плагина maven, которую я использую для SmartSprite.

 <plugin> 
      <groupId>org.carrot2.labs</groupId> 
      <artifactId>smartsprites-maven-plugin</artifactId> 
      <version>1.0</version> 
      <executions> 
       <execution> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>spritify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

ответ

2

Вы можете использовать Maven WAR plugin:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <webResources> 
      <resource> 
       <directory><!-- Your output directory --></directory> 
       <targetPath><!-- The target location of the files below --></targetPath> 
       <includes> 
        <include><!-- file pattern --></include> 
        <include><!-- file pattern --></include> 
       </includes> 
      </resource> 
     </webResources> 
    </configuration> 
</plugin> 

Вы также должны настроить SmartSprites использовать другой выходной каталог для сохранения оригинального CSS файла. Попробуйте опцию output-dir-path с пустым значением css-file-suffix.

+0

Привет Атешем, Как переименовать файл из MyStyle-sprite.css в MyStyle .css используя ресурсы? Я думал, что это может включать или исключать только файл, но не изменять его имя во время передачи. –

+0

@JohnFarrelly Обновлен мой ответ. Попробуйте использовать другой выходной каталог (тот, который отличается от области нуля по умолчанию WAR). –

+0

И, о да, это сработает. Я использую этот метод для немного другого сценария (RequireJS-оптимизация JS + файлов CSS). –

18

Я боюсь, что вы не найдете ничего проще или более изящное, чем Maven плагин AntRun с чем-то вроде этого:

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
     <execution> 
      <phase>prepare-package</phase> 
      <configuration> 
      <target> 
       <copy file="${project.build.directory}/mystyle-sprite.css" 
       tofile="${project.build.directory}/mystyle.css" /> 
      </target> 
      </configuration> 
      <goals> 
      <goal>run</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 
+1

Возможно, вам нужно переместить файл вместо копирования. Вы не хотите оставлять артефакты сборки в своей последней войне. –

+0

Не проблема. Замените '' task с ''. Вопрос был о копировании. –

+0

Что касается переименования файлов без использования сборки, это должен быть принятый ответ - только что сэкономил мой день :-) – Gunnar

Смежные вопросы