通過項目獲取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 );