wro4j-maven-plugin низкая производительность

Мы используем плагин wro4j maven для обработки css. у нас так много css, и неправильная обработка во время сборки занимает почти 10–20 минут.

Если я использую параллельный вариант maven, он сокращается до 8 минут.

Я все еще хочу максимально эффективно сократить время его сборки.

Есть ли лучший способ обрабатывать только те файлы, которые изменились.

Мой образец файла pom.xml:

    <plugin>
            <groupId>ro.isdc.wro4j</groupId>
            <artifactId>wro4j-maven-plugin</artifactId>
            <version>1.6.3</version>
            <executions>
                <execution>
                    <id>manage-assets</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>                     <targetGroups>myapp${minifier.suffix},myapp.head${minifier.suffix},myapp.tail${minifier.suffix},myapp.compfurniture.head${minifier.suffix},myapp.compfurniture.tail${minifier.suffix},myapp.compfurniture${minifier.suffix},myapp.compfurniture.oldie${minifier.suffix},myapp.oldie${minifier.suffix},myapp.public${minifier.suffix}</targetGroups> 
                        <minimize>true</minimize>
                        <ignoreMissingResources>false</ignoreMissingResources>                          
                        <contextFolder>${assets.folder.aggregate}</contextFolder>                           <destinationFolder>${assets.folder.aggregate}</destinationFolder>                           <cssDestinationFolder>${assets.folder.aggregate}/css</cssDestinationFolder>                         <jsDestinationFolder>${assets.folder.aggregate}/js</jsDestinationFolder>                                                                        
                        <wroFile>${project.build.directory}/wro4j/wro.xml</wroFile>
                        <wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
                        <extraConfigFile>${project.build.directory}/wro4j/wro.properties</extraConfigFile>                          <groupNameMappingFile>${project.build.directory}/wro4j/wro-namingstrategy.properties</groupNameMappingFile>                                     
                    </configuration>
                </execution>
            </executions>           
        </plugin>

wro4j.properties

preProcessors=cssImport,semicolonAppender 
postProcessors=lessCss,cssMinJawr,jsMin
parallelPreprocessing=true

Если кто-то пробовал это, дайте мне знать.


person Patan    schedule 19.07.2013    source источник


Ответы (2)


Вот ответ на ваш вопрос: https://code.google.com/p/wro4j/wiki/IsWro4jSlow

Для некоторых медленных процессоров есть альтернатива, например, less4j вместо rhinoLessCss.

Есть еще одна хитрость: добавьте в wro.properties следующее конфигурационное свойство:

parallelPreprocessing=true 

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

Стоит отметить, что доступна более новая версия wro4j - 1.7.0, которая содержит несколько улучшений и обновлений.

person Alex Objelean    schedule 19.07.2013
comment
Спасибо за ответ. Будет ли какой-либо результат, если я поменяю его на последнюю версию. - person Patan; 19.07.2013
comment
Все изменения по сравнению с последним выпуском описаны в примечаниях к выпуску: code.google.com/p/ wro4j/wiki/ReleaseNotes Даже если вы обновитесь до последней версии, это не решит проблему с производительностью, если вы используете медленные процессоры. Однако есть еще одна хитрость: добавьте в wro.properties следующее свойство конфигурации: parallelPreprocessing=true (по умолчанию false). Эта функция является экспериментальной, поэтому, если вы заметите какие-либо проблемы, сообщите мне. Не могли бы вы также опубликовать содержимое вашего файла wro.properties? - person Alex Objelean; 19.07.2013
comment
Спасибо за ответ. - person Patan; 19.07.2013
comment
Я добавил parallelPreprocessing как true. Я опубликую свои wro4j.properties. Дайте мне знать, если я могу улучшить это. - person Patan; 19.07.2013
comment
Пожалуйста, дайте мне знать, если я могу улучшить его производительность. - person Patan; 19.07.2013
comment
Я полагаю, что вы используете процессоры на базе Rhino (которые обычно довольно медленные). Если это так, то вы должны знать, что большинство процессоров на базе Rhino имеют аналогичный процессор на базе узлов (пример: nodeLessCss, nodeCoffeeScript), которые намного быстрее. Попробуйте перейти с Rhino на процессоры на основе узлов. Вы должны знать, что вам нужно установить node.js на свой компьютер и npm, необходимый для запуска процессора, прежде чем использовать процессор на основе узла. - person Alex Objelean; 19.07.2013

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

Также есть способ установить это условие параллельной обработки в самом плагине, а не в файле свойств.

Мы используем версию 1.5.0

Любой совет.

person darniz    schedule 19.07.2013
comment
Это должен быть комментарий к исходному вопросу (или отдельный вопрос), поскольку вы не даете ответа. - person eebbesen; 20.07.2013
comment
Тот же ответ здесь: используйте более быстрый процессор, заменив uglifyJs на googleClosure. - person Alex Objelean; 20.07.2013