设置KieContainer kie.maven.settings.custom

时间:2017-02-24 19:40:37

标签: drools kie

我在apache spark中使用带有scala的drools。为了让KIE知道查看我的私有nexus存储库以获取编译规则,我试图将系统属性:“kie.maven.settings.custom”设置为自定义settings.xml文件,该文件包含在工作目录中jar文件。

我正在尝试在运行时设置此系统属性,但结果不一致。这是我设置“kie.maven.settings.custom”

的代码
val userDir = System.getProperty("user.dir")
val customPath = Paths.get(userDir, "settings.xml")
System.setProperty("kie.maven.settings.custom", customPath.toString)

这在我的本地计算机上运行时似乎正常工作,但是在群集中它无法正常工作。

我的问题是:我是否应该期待这种方式能够像我期待的那样发挥作用?或者这是否为KIE获取系统属性创造了竞争条件?

我的自定义settings.xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<profilesXml xmlns="http://maven.apache.org/PROFILES/1.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd">
<profiles>
    <profile>
        <id>profile-1</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
                <id>temp-nexus</id>
                <url>http://nexus.path..com:8081/repository/maven-releases</url>
                <releases>
                    <updatePolicy>always</updatePolicy>
                </releases>
            </repository>
        </repositories>
    </profile>
</profiles>
</profilesXml>

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题,结果证明这是一个Spark问题,与Drools无关。

要解决此问题,我必须将自定义settings.xml添加到Spark作业类路径,并设置一些额外的Spark属性。在livy配置文件中,这看起来像:

"conf":{
        "spark.driver.extraJavaOptions": "-Dkie.maven.settings.custom=settings.xml",
        "spark.executor.extraJavaOptions": "-Dkie.maven.settings.custom=settings.xml"
    }

我为驱动程序和执行程序提供了额外的选项,虽然只设置执行程序的额外选项应该已经足够了,但我没有测试过。