Плагин Maven: изменение ресурсов перед упаковкой

Я не смог найти плагин maven, который отвечал бы моим требованиям по минимизации javascript и css, поэтому я начал создавать свой собственный. Однако, похоже, я наткнулся на блокпост. Минимизированные версии файлов всегда перезаписываются либо военным плагином, либо чем-то еще.

Моя файловая структура

src
   main
       java
       webapp
           assets
                 css
                   style1.css
                   style2.css
                   style3.css
                 js
                   script1.js
                   script2.js
                   script3.js

Мой плагин берет их, минимизирует и (предполагается) заменяет их в каталоге сборки. Как сделать так, чтобы они не перезаписывались?


person alta189    schedule 29.06.2012    source источник


Ответы (2)


Куда ваш плагин выводит измененные файлы? Как я это вижу, он вносит необходимые изменения (если это работает), а затем плагин maven war копирует исходные ресурсы поверх них.

Возможно, вам следует прикрепить свой код и pom.xml для лучшего ответа.

РЕДАКТИРОВАТЬ:

После просмотра вашего тестового проекта проблема может быть решена следующим изменением вашего pom.xml:

diff --git a/pom.xml b/pom.xml
index 0fb6044..ee693f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,9 +72,17 @@
                                <version>2.2</version>
                                <configuration>
                                        <webappDirectory>${basedir}/src/main/webapp</webappDirectory>
+                                       <warSourceExcludes>assets</warSourceExcludes>
+
                                        <failOnMissingWebXml>false</failOnMissingWebXml>
+                                       <webResources>
+                                               <resource>
+                                                       <!-- this is relative to the pom.xml directory -->
+                                                       <directory>${project.build.directory}/minified</directory>
+                                               </resource>
+                                       </webResources>
                                </configuration>
                        </plugin>
                </plugins>
        </build>
-</project>
\ No newline at end of file
+</project>

У меня также сложилось впечатление, что ваши измененные файлы css изменяются в каталоге src/main/webapp/assets, что неверно. Эти файлы следует изменять только после копирования в соответствующий каталог в целевом каталоге.

Я разветвил ваш репозиторий и отправил вам запрос на включение.

person carlspring    schedule 29.06.2012
comment
Скоро выложу на гитхаб и отвечу. Прямо сейчас он выводит его в ${project.build.directory}/${finalName}/, а затем структуру файла из папки веб-приложения. - person alta189; 30.06.2012
comment
Я почти уверен, что он переопределяется, я просто не уверен, как мне это делать... это первый раз, когда я создал плагин maven... - person alta189; 30.06.2012
comment
Если выложишь на GitHub, посмотрю. - person carlspring; 30.06.2012
comment
Извините за поздний ответ... Вот репо github.com/alta189/maven-minify- плагин - person alta189; 30.06.2012
comment
Это здорово, но... как насчет простого теста, который иллюстрирует, что дает сбой и как это воспроизвести? Насколько я могу судить, этот плагин сам создает военный файл...? - person carlspring; 30.06.2012
comment
Позвольте мне вместе провести тест... Нет, это была попытка решить проблему. Я изменил конфигурацию военного плагина, чтобы добавить файл webResource. Похоже, что ресурсы копируются, затем копируется источник веб-приложения, поэтому мои мини-файлы перезаписываются. - person alta189; 30.06.2012
comment
github.com/alta189/webapp-test Однако мое добавление в конфигурацию военного плагина не работает. - person alta189; 01.07.2012
comment
Они не изменяются там... плагин войны продолжает их копировать [ИНФО] Копирование веб-ресурсов веб-приложения [.../test/target/minified] в [.../test/src/main/webapp] - person alta189; 04.07.2012
comment
частично.... Но теперь он копирует измененные файлы поверх оригиналов в src/main/webapp - person alta189; 04.07.2012
comment
Ха! Вы правы, военный плагин действительно копирует их в каталог ресурсов. ВТФ?! - person carlspring; 04.07.2012
comment
Большой! Может быть, у вас все еще нет репутации! Ваше здоровье! :) - person carlspring; 04.07.2012

Прежде всего, я рекомендую просто использовать http://alchim.sourceforge.net/yuicompressor-maven-plugin/compress-mojo.html, способный сжимать и объединять JS/CSS.

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

person egore911    schedule 01.07.2012
comment
Дело в том, что я не хочу, чтобы он сливался, я уже пробовал этот плагин, он не соответствовал моим потребностям. Кроме того, я знаю, что перезаписывает их, это военный плагин. Он копирует ресурсы, затем src/main/webapp и, наконец, упаковывает их. Все в одной фазе - person alta189; 01.07.2012