通过项目获取drools中jar包
public class RuleExecutor {
private static final Logger LOGGER = LoggerFactory.getLogger(RuleExecutor.class);
static ReleaseId releaseId = new ReleaseIdImpl("com.test.droolsjar", "droolsjar", "1.0");
private static KieBase kieBase;
public static KieBase getKieBase() {
if (kieBase == null) {
KieServices kieServices = KieServices.Factory.get();
KieContainer kieContainer = kieServices.newKieContainer(getReleaseId());
kieBase = kieContainer.getKieBase();
}
return kieBase;
}
上面是代码首先看
KieContainer kieContainer = kieServices.newKieContainer(getReleaseId());
org.kie.scanne
r
里面
InternalKieModule kieModule = (InternalKieModule) getRepository().getKieModule(releaseId);//这里面是获取
if (kieModule == null) {
throw new RuntimeException("Cannot find KieModule: " + releaseId);
}
然后类,看里面的注解
—KieRepositoryScannerImpl
public synchronized KieModule loadArtifact(ReleaseId releaseId, PomModel pomModel) {
ArtifactResolver resolver = pomModel != null ?
ArtifactResolver.getResolverFor(pomModel) :
getArtifactResolver();//这个是获取pom环境变量和里面的设计
return loadArtifact( releaseId, resolver );
}
ArtifactResolver 获取pom
ArtifactResolver() {
mavenRepository = MavenRepository.getMavenRepository();
pomParser = new EmbeddedPomParser();
}
获取setting的地址:
private static SettingsSource initUserSettingsSource() {
String customSettings = System.getProperty( CUSTOM_SETTINGS_PROPERTY );//G:kie.maven.settings.custom 选择kie变量无默认的变量
if (customSettings != null) {
File customSettingsFile = new File( customSettings );
if (customSettingsFile.exists()) {
return new FileSettingsSource( customSettingsFile );
} else {
try {
return new UrlSettingsSource( new URL( customSettings ) );
} catch (MalformedURLException e) {
// Ignore
}
log.warn("Cannot find custom maven settings: " + customSettings);
}
}
String userHome = System.getProperty( "user.home" );
if (userHome != null) {
File userSettingsFile = new File( userHome + "/.m2/settings.xml" );
if (userSettingsFile.exists()) {
return new FileSettingsSource( userSettingsFile );
}
} else {
log.warn("User home is not set");
}
return null;
}
进入类:
org.kie.scanner.embedder.MavenSettings.initSettings–>
org.kie.scanner.KieRepositoryScannerImpl->loadArtifact
public synchronized KieModule loadArtifact(ReleaseId releaseId, PomModel pomModel) {
ArtifactResolver resolver = pomModel != null ?
ArtifactResolver.getResolverFor(pomModel) :
getArtifactResolver();
return loadArtifact( releaseId, resolver );
}
进入类:
org.eclipse.aether.internal.impl.DefaultArtifactResolver->resolve
VersionRequest versionRequest = new VersionRequest( artifact, repos, request.getRequestContext() );
versionRequest.setTrace( trace );
//获取drools下的包**看下这个地方
versionResult = versionResolver.resolveVersion( session, versionRequest );