首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KieScanner无法自动获取最新版本!

KieScanner无法自动获取最新版本!
EN

Stack Overflow用户
提问于 2016-08-08 13:52:16
回答 2查看 1.6K关注 0票数 0

我想将drools工作台6.4.0集成到我自己的应用程序中。

下面是主类:

代码语言:javascript
复制
package com.example;
import com.idss.poc.CouponFact;
import com.idss.poc.Result;
import org.codehaus.plexus.util.FileUtils;
import org.drools.compiler.kie.builder.impl.KieServicesImpl;
import org.drools.compiler.kproject.ReleaseIdImpl;
import org.drools.core.io.impl.UrlResource;
import org.kie.api.KieServices;
import org.kie.api.builder.KieModule;
import org.kie.api.builder.KieRepository;
import org.kie.api.builder.KieScanner;
import org.kie.api.builder.ReleaseId;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.StatelessKieSession;
import org.kie.scanner.KieScannerFactoryServiceImpl;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class FunctionExample {
    public static void main(String[] args) {
        KieServices ks = KieServices.Factory.get();
        ReleaseId releaseId = ks.newReleaseId( "com.test", "poc", "LATEST" );

        KieContainer kContainer = ks.newKieContainer(releaseId);
        KieScanner kieScanner = ks.newKieScanner(kContainer);

        kieScanner.start( 10000L );

        Scanner scanner = new Scanner(System.in);

        while (true) {
            kieScanner.scanNow();
            String line = scanner.nextLine();
            runRule(kContainer);
        }
    }

    private static void runRule(KieContainer kieKontainer) {
        StatelessKieSession kSession =kieKontainer.newStatelessKieSession("ks");
        Result result = new Result();
        List<String> list = new ArrayList<String>();
        result.setRules(list);

        kSession.setGlobal("result", result);

        CouponFact cf = new CouponFact();
        cf.setPhoneCount(2);
        cf.setUserCount(2);
        cf.setDeviceCount(2);
        cf.setIp10mCount(10);
        cf.setIpDayCount(10);
        kSession.execute(cf);

        System.out.println(result.getScore() + "," + result.getRules());
    }
}

下面是我自己的应用程序使用的settings.xml。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>~/.m2/repository</localRepository>
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
    <server>
      <id>guvnor-m2-repo</id>
      <username>workbench</username>
      <password>workbench!</password>
      <configuration>
        <wagonProvider>httpclient</wagonProvider>
        <httpConfiguration>
          <all>
            <usePreemptive>true</usePreemptive>
          </all>
        </httpConfiguration>
      </configuration>
    </server>
    <server>
      <id>mymirror</id>
      <username>workbench</username>
      <password>workbench!</password>
      <configuration>
        <wagonProvider>httpclient</wagonProvider>
        <httpConfiguration>
          <all>
            <usePreemptive>true</usePreemptive>
          </all>
        </httpConfiguration>
      </configuration>
    </server>
  </servers>
  <mirrors>
    <mirror>
      <id>mymirror</id>
      <url>http://10.10.10.57:8080/kie-wb/maven2</url>
      <mirrorOf>*</mirrorOf>
      <layout>default</layout>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>guvnor-m2-repo</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
            <id>guvnor-m2-repo</id>
            <name>Guvnor M2 Repo</name>
            <url>http://10.10.10.57:8080/kie-wb/maven2</url>
            <releases>
              <enabled>true</enabled>
            </releases>
            <updatePolicy>always</updatePolicy>
        </repository>
      </repositories>
    </profile>
  </profiles>
  <activeProfiles>
   <activeProfile>guvnor-m2-repo</activeProfile>
  </activeProfiles>
</settings>

当我在工作台中更新我的drools规则,并升级我的存储库的版本时,但是我的应用程序不能自动获得我的存储库的最新版本。我得到的日志如下:

代码语言:javascript
复制
11:50:24.158 [Timer-0] DEBUG org.kie.scanner.embedder.MavenEmbedderUtils - Not in OSGi: using plexus based maven parser
11:50:24.212 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider - Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/pinter/Desktop/RiskGuard/~/.m2/repository
11:50:24.212 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider - Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/pinter/Desktop/RiskGuard/~/.m2/repository
11:50:24.213 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager - Using mirror mymirror (http://10.10.10.57:8080/kie-wb/maven2) for guvnor-m2-repo (http://10.10.10.57:8080/kie-wb/maven2).
11:50:24.215 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager - Using mirror mymirror (http://10.10.10.57:8080/kie-wb/maven2) for guvnor-m2-repo (http://10.10.10.57:8080/kie-wb/maven2).
11:50:24.215 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager - Using mirror mymirror (http://10.10.10.57:8080/kie-wb/maven2) for central (https://repo.maven.apache.org/maven2).
11:50:24.216 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultDependencyCollector - Dependency collection stats: {ConflictMarker.analyzeTime=0, ConflictMarker.markTime=0, ConflictMarker.nodeCount=1, ConflictIdSorter.graphTime=0, ConflictIdSorter.topsortTime=0, ConflictIdSorter.conflictIdCount=0, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=0, ConflictResolver.conflictItemCount=0, DefaultDependencyCollector.collectTime=0, DefaultDependencyCollector.transformTime=0}
11:50:24.217 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider - Using manager EnhancedLocalRepositoryManager with priority 10.0 for ~/.m2/repository
11:50:24.217 [Timer-0] DEBUG org.eclipse.aether.internal.impl.DefaultUpdateCheckManager - Skipped remote request for com.idss:poc/maven-metadata.xml, locally cached metadata up-to-date.

有人能帮我解决这个问题吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-08-15 14:05:32

如果您在应用程序的version number字段中使用LATESTKieScanner会尝试将本地存储库中可用的jar的版本号与kie-workbench上提供的jar的版本号进行匹配。如果两个版本相同,则不从远程存储库获取jar,而从本地存储库使用jar。每次“构建和部署”时,一定要增加版本号,以使更改反映在您的应用程序端。

如果每次部署时都递增版本号对您来说太麻烦了,我建议您在版本号中使用-SNAPSHOT。快照版本始终从远程存储库获取,即使本地存储库中有相同的版本也是如此。<version>-SNAPSHOT应仅用于开发目的。

票数 1
EN

Stack Overflow用户

发布于 2016-08-08 18:00:20

我假设您输入" latest“是为了获取KJAR的最新快照版本。

如果是这种情况,我认为您需要将快照更新策略设置为大于默认值"daily“的值。此外,您的maven设置文件中似乎有一个错误,因为updatePolicy标记没有正确嵌套。我建议你尝试一下这样的方法:

代码语言:javascript
复制
  <profiles>
    <profile>
      <id>guvnor-m2-repo</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
            <id>guvnor-m2-repo</id>
            <name>Guvnor M2 Repo</name>
            <url>http://10.10.10.57:8080/kie-wb/maven2</url>

      <releases>
        <enabled>false</enabled>
        <updatePolicy>always</updatePolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
      </snapshots>

        </repository>
      </repositories>
    </profile>
  </profiles>

参考:https://maven.apache.org/settings.html#Repositories

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38822069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档