2012-06-22 55 views
1

我正在使用wro4j-maven-plugin來預處理我的.js,.css.less資源。如何使wro4j-maven-plugin在預處理器失敗時失敗構建?

當預處理器發生故障時,如.less文件包含語法錯誤時,插件僅在構建中輸出堆棧跟蹤並繼續構建。

這導致必須監視構建過程或者破壞資源的風險。有沒有什麼辦法讓這個插件failOnError像一個AntRun一樣?

的pom.xml:

<plugin> 
    <groupId>ro.isdc.wro4j</groupId> 
    <artifactId>wro4j-maven-plugin</artifactId> 
    <version>1.4.5</version> 
    <executions> 
     <execution> 
     <phase>compile</phase> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <minimize>true</minimize> 
     <jsDestinationFolder>${basedir}/WebContent/resources/min/js/</jsDestinationFolder> 
     <cssDestinationFolder>${basedir}/WebContent/resources/min/css/</cssDestinationFolder> 
     <contextFolder>${basedir}/WebContent/</contextFolder> 
     <wroFile>${basedir}/WebContent/WEB-INF/wro.xml</wroFile> 
     <extraConfigFile>${basedir}/WebContent/WEB-INF/wro.properties</extraConfigFile> 
     <ignoreMissingResources>false</ignoreMissingResources> 
     <wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory> 
    </configuration> 
</plugin> 

wro.properties:

preProcessors=cssUrlRewriting,cssImport,yuiJsMin 
postProcessors=lessCss,yuiCssMin 

回答

0

發生異常時的lessCss處理器的默認行爲是中止處理並退出資源不變。這背後的原因是,當一個有效的css使用lessCss處理時,它可能會失敗,因爲它具有從Less角度來看無效的語法。這通常發生在處理混合資源時(css &更少)。

下一個wro4j版本(1.4.7)將在資源處理過程中處理異常時更改默認行爲。因此,當發生異常時 - 整體處理將失敗(可以配置此行爲)。

有一個早期版本(包括1.4.5)的解決方法。您可以擴展LessCssProcessor並覆蓋onException方法。例如:

/** 
* Invoked when a processing exception occurs. 
*/ 
protected void onException(final WroRuntimeException e) { 
    throw e; 
} 

通過使用這個新的處理器,您的構建將在任何時候處理器失敗時失敗。