【问题标题】:Ant build success even syntaxx errorAnt构建成功甚至语法错误
【发布时间】:2016-02-16 15:28:10
【问题描述】:

我正在使用 Drools DroolsCompilerAntTask 构建包二进制文件,如下所示

 <taskdef name="compiler" classname="org.drools.contrib.DroolsCompilerAntTask" classpathref="drools.path" />

  <target name="rules" >
    <compiler
      binformat="package" 
      srcdir="${path}/src/rules"
      tofile="${path}/build/rules.pkg"
      classpathref="compile.classpath" >
      <include name="*.drl" />
      <include name="*.brl" />
      <include name="*.xml" />
    </compiler>
  </target>

但是当我运行构建时。我能够收到错误消息,即使出现错误,构建仍然显示成功。

rule-clean:
rules:
 [compiler] [8,0]: [ERR 107] Line 8:0 mismatched input 'asdasd' expecting one of the following tokens: '[package, import, global, declare, function, rule, query]'.
 [compiler] [0,0]: Parser returned a null Package
 [compiler] [8,0]: [ERR 107] Line 8:0 mismatched input 'asdasd' expecting one of the following tokens: '[package, import, global, declare, function, rule, query]'.
 [compiler] [0,0]: Parser returned a null Package

BUILD SUCCESSFUL
Total time: 41 seconds

当drool编译器失败时,是否有任何解决方案可以使构建失败?

【问题讨论】:

  • 你用的是什么版本的口水?
  • 5.4.0.Final 来自drools repo

标签: java ant build drools


【解决方案1】:

查看您正在使用的org.drools.contrib.DroolsCompilerAntTask 的源代码,我想我知道发生了什么。不幸的是,这似乎是这个类中的一个错误。

按照设计(我们可以争论这是一个好还是坏的设计),当正在编译的资源之一包含错误时,Drools 编译器不会失败(抛出任何异常)。您在控制台中看到的输出确实是编译器发现的编译错误,但这并不意味着编译器本身失败。在 Drools 中,编译了一些资源后,需要手动检查是否有错误。

org.drools.contrib.DroolsCompilerAntTask 类使用 2 种方法编译资源:

这两种方法在编译完您指定的资源后确实会检查错误;这里唯一的问题是,如果有编译错误,它们只会被打印到控制台,而不是其他任何东西。在这种情况下永远不会抛出异常。例如,void compileAndAddFiles(PackageBuilder pbuilder) 处理错误的方式如下:

if (pbuilder.hasErrors()) {
    System.err.println(pbuilder.getErrors().toString());
}

我想你在这里最好的选择是克隆droolsjbpm-tools 项目(使用分支5.4.x)并在上述方法中的System.err.println 语句之后添加throw new IllegalStateException() 或类似的东西。 code that is actually invokingcompileAndAddFiles() 方法实际上捕获任何异常并用 BuildException 包装它。我不是 Ant 专家,但我认为这足以让任务失败。

希望对你有帮助,

【讨论】:

  • 感谢您的解释,我想知道为什么当 drools 编译时错误仍然存​​在并且仍然使构建通过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 2013-03-14
相关资源
最近更新 更多