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