drools源碼解析 如何獲取jar包和項目中pom文件

通過項目獲取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 );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章