当预处理程序失败时,如何使wro4j-maven-plugin失败?

时间:2012-06-22 15:34:40

标签: maven less

我正在使用wro4j-maven-plugin预处理我的.js.css.less资源。

当预处理器失败时,例如当.less文件包含语法错误时,插件只会在构建中输出堆栈跟踪并继续构建。

这导致必须监视构建过程,或者有资源中断的风险。有没有办法让这个插件failOnErrorAntRun一样?

的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

1 个答案:

答案 0 :(得分:0)

发生异常时lessCss处理器的默认行为是中止处理并保持资源不变。这背后的原因是,当使用lessCss处理有效的css时,它可能会失败,因为它从Less的角度来看语法无效。这通常在您处理混合资源(css&amp; less)时发生。

下一个wro4j版本(1.4.7)将在资源处理期间处理异常时更改默认行为。因此,当发生异常时 - 整个处理将失败(可以配置此行为)。

早期版本(包括1.4.5)有一种解决方法。您可以扩展LessCssProcessor并覆盖onException方法。例如:

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

通过使用这个新处理器,只要处理器出现故障,您的构建就会失败。