Drools 使用kmodule.xml未找到KieBase的DRL文件

Drools 使用kmodule.xml未找到KieBase的DRL文件,drools,Drools,我正在使用java和Drools 6.2.0开发一个Maven项目,我试图通过kmodule.xml文件将某个DRL文件“绑定”到一个KieBase,但我不断收到错误 WARN org.drools.compiler.kie.builder.impl.AbstractKieModule - No files found for KieBase 在运行项目时 我认为我已经以正确的方式配置了所有内容,如(第4.2.2章-概述-构建、部署、利用和运行-构建)所示,但看不出我的错误在哪里 在这个项目中

我正在使用java和Drools 6.2.0开发一个Maven项目,我试图通过kmodule.xml文件将某个DRL文件“绑定”到一个KieBase,但我不断收到错误

WARN org.drools.compiler.kie.builder.impl.AbstractKieModule - No files found for KieBase
在运行项目时

我认为我已经以正确的方式配置了所有内容,如(第4.2.2章-概述-构建、部署、利用和运行-构建)所示,但看不出我的错误在哪里

在这个项目中,由于项目体系结构的原因,我认为通过编码来声明/配置Drools不是我的选择,这就是我使用kmodule.xml方法的原因

欢迎提出任何建议


My kmodule.xml(位置:src/main/resources/META-INF):

我的班级出发(仅Drools代码)(位置:src/com/site/myapp/checks):

My pom.xml(仅Drools依赖项):


org.drools
流口水
6.2.0.1最终版本
聚甲醛
org.kie
基亚皮
6.2.0.1最终版本
org.drools
drools编译器
6.2.0.1最终版本
运行时
org.drools
命名会话
6.2.0.1最终版本

问题是需要在pom.xml文件中声明以包含DRL文件

pom.xml文件应该是这样的(在我的项目中是这样的,在其他项目中应该是类似的):


...
src
src/main/resources
META-INF/kmodule.xml
com/site/myapp/checks/offering/offering.drl
.
org.drools
流口水
6.2.0.1最终版本
聚甲醛
进口
org.kie
基亚皮
org.drools
drools编译器
运行时
注意问题中所示的与pom.xml相关的更改。

在这里,我已经更改了drools bom工件的位置,它现在位于dependecyManagement标记中(该工件用于工件的版本控制,您只需要声明一次工件的版本);并删除了命名的kiesession工件。

问题是需要在pom.xml文件中声明以包含DRL文件

pom.xml文件应该是这样的(在我的项目中是这样的,在其他项目中应该是类似的):


...
src
src/main/resources
META-INF/kmodule.xml
com/site/myapp/checks/offering/offering.drl
.
org.drools
流口水
6.2.0.1最终版本
聚甲醛
进口
org.kie
基亚皮
org.drools
drools编译器
运行时
注意问题中所示的与pom.xml相关的更改。

在这里,我已经更改了drools bom工件的位置,它现在位于dependecyManagement标记中(该工件用于工件的版本控制,您只需要声明一次工件的版本);并删除了名为kiesession的工件。

我没有看到任何明显的问题。但我确实有一些问题:为什么要包括drools bom和命名会话工件?你真的需要它们吗?你的drl文件名是什么?-drools bom工件我不确定,它是由其他人包含的,但我认为它与编译有关。-命名的kiesession工件我在教程中看到过,并尝试过…-我的DRL文件名是exchange.drlI在这里看不到任何明显的问题。但我确实有一些问题:为什么要包括drools bom和命名会话工件?你真的需要它们吗?你的drl文件名是什么?-drools bom工件我不确定,它是由其他人包含的,但我认为它与编译有关。-命名的kiesession工件我在教程中看到过,并尝试过…-我的DRL文件名是exchange.DRL
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://jboss.org/kie/6.0.0/kmodule">
    <kbase name="departureKB" packages="com.site.myapp.checks.departure">
        <ksession name="departureKS" type="stateless" />
    </kbase>
</kmodule>
package com.site.myapp.checks.departure

rule "my rule 1"
    when
        // some conditions
    then
        // something to do
end
channelName = "departure";
KieServices ks = KieServices.Factory.get();
KieContainer kc = ks.getKieClasspathContainer();
String kSessionName = channelName+"KS";
kSession = kc.newStatelessKieSession(kSessionName);
<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-bom</artifactId>
    <version>6.2.0.Final</version>
    <type>pom</type>
</dependency>
<dependency>
    <groupId>org.kie</groupId>
    <artifactId>kie-api</artifactId>
    <version>6.2.0.Final</version>
</dependency>
<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-compiler</artifactId>
    <version>6.2.0.Final</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.drools</groupId>
    <artifactId>named-kiesession</artifactId>
    <version>6.2.0.Final</version>
</dependency>
<project ...>
   ...
    <build>
        <sourceDirectory>src</sourceDirectory>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>META-INF/kmodule.xml</include>
                    <include>com/site/myapp/checks/departure/Departure.drl</include>
                </includes>
                <targetPath>.</targetPath>
            </resource>
        </resources>
    </build>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.drools</groupId>
                <artifactId>drools-bom</artifactId>
                <version>6.2.0.Final</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
</project>