2016-08-08 5 views
0

私はdroolsワークベンチ6.4.0.Finalを自分のアプリケーションに統合したいと思います。KieScannerは自動的にLATESTバージョンをフェッチできません!

下記これはメインクラスです:

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は、独自のアプリケーションで使用されている。この。

<?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を更新ワークベンチ内のルール、そして私のレポのバージョンをアップグレードするが、私のアプリケーションは自動的に私のレポの最新バージョンを得ることはありません。

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. 

は、誰もがそれを把握するために私を助けることができる: 私はこのようなログを取得しますか?ありがとうございました!

+0

レポのバージョンをアップグレードした後、プロジェクトをビルドして展開しましたか? –

+0

もちろん、私は自分のプロジェクトをビルドして展開しました。しかし、それは動作しませんでした、私は古いバージョンを得ました。 – PINTER

答えて

0

あなたのKJARの最新のスナップショットバージョンを取得するために "LATEST"を入力すると仮定します。

この場合、スナップショットの更新ポリシーをデフォルトの「毎日」よりも大きく設定する必要があると思います。さらに、updatePolicyタグが正しくネストされていないため、Maven設定ファイルにエラーがあるようです。

<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

動作しません。 – PINTER

+0

これからは動作します。 – PINTER

1

アプリケーションでバージョン番号フィールドにLATESTを使用している場合は、KieScanner試みがローカルで利用可能jarファイルのバージョン番号と一致するように、私はあなたがこのような何かをしようと示唆していますkie-workbenchで入手可能なjarのバージョン番号を持つリポジトリ。両方のバージョンが同じ場合、リモートリポジトリからjarをフェッチせず、ローカルリポジトリのjarを使用します。あなたがビルドしてデプロイするたびに、あなたのアプリケーション側で変更が反映されるように、バージョン番号を増やしてください。

デプロイするたびにバージョン番号を増やすことが多すぎる場合は、バージョン番号に-SNAPSHOTを使用することをおすすめします。同じバージョンがローカルリポジトリで使用可能であっても、スナップショットバージョンは常にリモートリポジトリからフェッチされます。 <version>-SNAPSHOTは、開発目的でのみ使用してください。

0

@タリラブ@Naved Alamのおかげで、あなたの答えは私を助けます。 私はDroolsのドキュメントを読んで、それが私に語った:

展開瓶にKieScannerがするだけピックアップの変更を、それはSNAPSHOT、バージョンの範囲、LATEST、またはRELEASEの設定を使用している場合。固定バージョンは、実行時に自動的に更新されません。

だから、私は私のワークベンチプロジェクトを変更し、2.0.0-SNAPSHOTにバージョン番号を設定し、

ReleaseId releaseId = ks.newReleaseId("com.test", "poc", "2.0.0-SNAPSHOT"); 

に私のコード

ReleaseId releaseId = ks.newReleaseId("com.test", "poc", "LATEST"); 

を変更しますこれまでのところ、うまく動作しません。プログラムは次のようにログを示しています。私たちが見たよう

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. 

、中央リポジトリhttps://repo.maven.apache.org/maven2は私のカスタムリモートリポジトリhttp://10.10.10.57:8080/kie-wb/maven2によって上書きされています。

私はそれがうまく働いて

<mirrors> 
    <mirror> 
     <id>mymirror</id> 
     <url>http://10.10.10.57:8080/kie-wb/maven2</url> 
     <mirrorOf>guvnor-m2-repo</mirrorOf> 
     <layout>default</layout> 
    </mirror> 
</mirrors> 

、私のsettings.xmlを変更しよう!

関連する問題