drools源码解析 如何获取jar包和项目中pom文件

博客主要介绍了在项目中获取drools的jar包的方法,涉及查看代码中的类及注解,如KieRepositoryScannerImpl,还介绍了获取pom、setting地址的相关类,包括org.kie.scanner.embedder.MavenSettings.initSettings等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过项目获取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 );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值