gpt4 book ai didi

java - Ant 构建成功甚至语法错误

转载 作者:行者123 更新时间:2023-12-02 03:56:46 25 4
gpt4 key购买 nike

我正在使用 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 编译器失败时,有什么解决方案可以让 Build to Fail 吗?

最佳答案

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

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

类(class)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 之后添加上述方法中的语句 a throw new IllegalStateException()或类似的东西。 code that is actually invoking compileAndAddFiles()方法实际上是捕获任何异常并用 BuildException 包装它。 。我不是 Ant 专家,但我认为这应该足以使任务失败。

希望对你有帮助

关于java - Ant 构建成功甚至语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35369530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com