Repository Drools 6没有可用于访问存储库的连接器
我们刚开始使用Drools 6,并尝试使用内部Nexus存储库中的规则工件 当工件存在于本地存储库中时,一切正常 但是,当尝试从存储库中检索工件时,会出现以下异常:Repository Drools 6没有可用于访问存储库的连接器,repository,drools,artifact,wagon,Repository,Drools,Artifact,Wagon,我们刚开始使用Drools 6,并尝试使用内部Nexus存储库中的规则工件 当工件存在于本地存储库中时,一切正常 但是,当尝试从存储库中检索工件时,会出现以下异常: WARN MavenRepository - Unable to resolve artifact: foo.bar.rules.callflow.res:rules-callflow-res:1.0.0-SNAPSHOT org.sonatype.aether.resolution.ArtifactResolutionExcep
WARN MavenRepository - Unable to resolve artifact: foo.bar.rules.callflow.res:rules-callflow-res:1.0.0-SNAPSHOT
org.sonatype.aether.resolution.ArtifactResolutionException: Could not transfer artifact foo.bar.rules.callflow.res:rules-callflow-res:jar:1.0.0-SNAPSHOT from/to nexus (http://nexus:8081/nexus/content/groups/public): No connector available to access repository nexus (http://nexus:8081/nexus/content/groups/public) of type using the available factories FileRepositoryConnectorFactory, WagonRepositoryConnectorFactory
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:538)
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:216)
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:193)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:286)
at org.kie.scanner.MavenRepository.resolveArtifact(MavenRepository.java:205)
at org.kie.scanner.MavenRepository.resolveArtifact(MavenRepository.java:194)
at org.kie.scanner.ArtifactResolver.resolveArtifact(ArtifactResolver.java:51)
at org.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:100)
at org.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:93)
at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.loadKieModuleFromMavenRepo(KieRepositoryImpl.java:114)
at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:100)
at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:77)
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:97)
at foo.bar.rules.callflow.res.CallflowRESTests.test0800800800(CallflowRESTests.java:36)
这是我们的测试课程:
public class CallflowRESTests
{
private KieServices ks;
private KieContainer kContainer;
@Before
public void setup() {
ks = KieServices.Factory.get();
}
@Test
public void test0800800800() {
try
{
ReleaseId releaseId = ks.newReleaseId("foo.bar.rules.callflow.res","rules-callflow-res","1.0.0-SNAPSHOT");
KieContainer kContainer = ks.newKieContainer(releaseId);
// Extra code removed since problem occurs in the line above
} catch (Exception e)
{
e.printStackTrace();
}
}
}
该工件存在于我们的内部Nexus存储库中,但当我运行测试类时,它从未尝试连接到Wireshark检查过的工件
我在这里错过了什么 经过数小时的调查,我似乎找到了无法从远程Maven存储库检索规则工件的问题的原因。 根本原因是Maven配置中settings.xml中的一个部分。一旦我删除了这个部分,我们的规则实现就能够从远程Nexus存储库中检索规则工件。 但是,在尝试连接到settings.xml中配置的存储库之前,它似乎会尝试联系外部IP地址,但这似乎是一个maven问题,而不是规则问题 2015年3月27日编辑:在Maven settings.xml中使用Drools 6.1.0.Final时,必须添加行
<layout>default</layout>
到镜像配置。
在这之后,它应该可以工作。使用的Drools版本是6.1.0。关于Edit 27.03.2015的编辑,在这个线程中报告了完整的解释:换句话说,使用了maven库的一个bug。