根据drools 6.3 documentation, section 4.2.2.3:
Maven的KIE插件可确保工件资源经过验证和预编译,建议始终使用它。要使用该插件,只需将其添加到Maven pom.xml的构建部分
因此,我的pom.xml是:
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>6.3.0.Final-redhat-9</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>6.3.0.Final-redhat-9</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.kie</groupId>
<artifactId>kie-maven-plugin</artifactId>
<version>6.3.0.Final-redhat-9</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
我在rules.xls
放置了我的决策表文件,让我们称之为src/main/resources/my/company/package/
。我的Maven项目中唯一的另一个文件是kmodule.xml
文件,该文件位于src/main/resources/META-INF/
并包含最小代码:
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"/>
因为我删除了所有其他依赖项(包括包含决策表中使用的Java对象的依赖项),所以我希望drools能够启动类型为cannot find symbol
的错误消息。
但是当我尝试使用Maven clean install
项目时,编译成功,创建了一个JAR文件,它确实包含kmodule.xml
和rules.xls
个文件。放置它们。编译期间没有生成其他文件,没有错误,没有警告,没有。只是一个包含我的文件的简单JAR,MANIFEST.MF
文件和maven
下的META-INF
目录。
在maven trace中,这里是激活的插件(按此顺序):
[INFO] --- maven-clean-plugin:2.4.1:clean
[INFO] --- maven-resources-plugin:2.5:resources
[INFO] --- maven-compiler-plugin:2.3.2:compile
[INFO] --- maven-resources-plugin:2.5:testResources
[INFO] --- maven-compiler-plugin:2.3.2:testCompile
[INFO] --- maven-surefire-plugin:2.10:test
[INFO] --- maven-jar-plugin:2.3.2:jar
[INFO] --- maven-install-plugin:2.3.1:install
没有关于kie插件的事情。是否有任何提示在构建时激活规则编译?
答案 0 :(得分:0)
为了激活kie-maven-plugin,还需要在pom.xml中指定正确的包装类型
<packaging>kjar</packaging>
答案 1 :(得分:0)
我终于找到了激活插件的方法。我把它添加到我的pom.xml:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.kie</groupId>
<artifactId>kie-maven-plugin</artifactId>
<version>6.3.0.Final-redhat-9</version>
<extensions>true</extensions>
<executions>
<execution>
<id>brms-rules-compilation</id>
<phase>generate-resources</phase>
<goals>
<goal>build</goal>
</goals>
<inherited>false</inherited>
<configuration>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
现在获得Drools编译跟踪,包括:
[INFO] --- kie-maven-plugin:6.3.0.Final-redhat-9:build
[main] INFO org.drools.compiler.kie.builder.impl.KieRepositoryImpl - Adding KieModule from resource: FileResource[...]
我不是Maven大师,这个解决方案可能不是最好的(我甚至不完全理解我作为Maven视角写的内容),所以我很乐意让一个更容易的。