1

有没有办法将程序创建的 Drools 6 工件部署到底层 maven 存储库?我不想以某种方式显式调用mvn deploy,而是从程序本身进行调用:

public static void main(String[] args) {
    String ruleString = "rule \"TestRule\"\nthen\nSystem.out.println(\"This is a testrule.\");\nend";

    KieServices kieServices = KieServices.Factory.get();

    KieModuleModel kieModuleModel = kieServices.newKieModuleModel();
    KieBaseModel kieBaseModel = kieModuleModel.newKieBaseModel("testbase1").setDefault(true);
    KieSessionModel kieSessionModel = kieBaseModel.newKieSessionModel("testsession1").setDefault(true).setType(KieSessionModel.KieSessionType.STATELESS);

    KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
    kieFileSystem.generateAndWritePomXML(new ReleaseIdImpl("de.itm.test", "testartifact", "0.0.1-SNAPSHOT"));
    kieFileSystem.write("src/main/resources/testbase1/rule1.drl", ruleString);

    KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem).buildAll();

    // how to now deploy the new artifact so it is available on disc, e.g. in ~/.m2/repository/de/itm/test/test/testartifact/0.0.1-SNAPSHOT/ ?
}
4

1 回答 1

4

在这里,您可以看到执行您要求的单元测试:

https://github.com/kiegroup/drools/blob/master/kie-ci/src/test/java/org/kie/scanner/KieScannerIncrementalCompilationTest.java#L63

基本上:

MavenRepository repository = MavenRepository.getMavenRepository();
repository.deployArtifact(releaseId, kJar1, kPom);
于 2014-03-12T21:36:46.760 回答