Hello,

I am using Drools 6.1.0.Beta1 in a project with the following (shortened) 
pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
        <modelVersion>4.0.0</modelVersion>

        <groupId>de.test.configuration</groupId>
        <artifactId>someTest</artifactId>
        <version>0.7.0-SNAPSHOT</version>
        <packaging>jar</packaging>
        <name>droolsTest</name>

        <parent>
                <groupId>de.test</groupId>
                <artifactId>maven-parent</artifactId>
                <version>0.3</version>
        </parent>

        <dependencies>
                <!-- The Drools rule engine -->
                <dependency>
                        <groupId>org.drools</groupId>
                        <artifactId>drools-core</artifactId>
                        <version>6.1.0.Beta1</version>
                </dependency>
                <dependency>
                        <groupId>org.drools</groupId>
                        <artifactId>drools-compiler</artifactId>
                        <version>6.1.0.Beta1</version>
                </dependency>
                <!-- getting maven artefacts -->
                <dependency>
                        <groupId>org.kie</groupId>
                        <artifactId>kie-ci</artifactId>
                        <version>6.1.0.Beta1</version>
                </dependency>
        </dependencies>
</project>

For the internal maven, used within KIE/Drools, I have a separate settings.xml, 
which is configured with the property 
-Dkie.maven.settings.custom="X:\\droolsmaven\\settings.xml"
The contents of this file are:

<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>x:/droolsmaven/repository</localRepository>

        <profiles>
                <profile>
                        <id>mavenDroolsProfile</id>
                        <activation>
                                <activeByDefault>true</activeByDefault>
                        </activation>

                        <repositories>

                                <repository>
                                        <id>someRepo</id>
                                        <url>http://1.2.3.4</url>
                                        <releases>
                                                <enabled>false</enabled>
                                        </releases>
                                        <snapshots>
                                                <enabled>false</enabled>
                                        </snapshots>
                                </repository>

                                <repository>
                                        <id>central</id>
                                        <url>http://repo1.maven.org/maven2</url>
                                        <releases>
                                        <enabled>false</enabled>
                                        </releases>
                                        <snapshots>
                                                <enabled>false</enabled>
                                        </snapshots>
                                </repository>
                        </repositories>
                </profile>
        </profiles>

</settings>

In that local repository, the respective artifact used later is deployed, which 
is working, confirmed with a non-maven-project.

Now, when trying running the following code within the maven project which is 
defined by the above mentioned pom, I get the errors mentioned after this code 
block:

public class MainKieTest {

    public static void main(String[] args) {
        KieServices ks = KieServices.Factory.get();

        KieRepository repository = ks.getRepository();
        ReleaseId releaseId = ks.newReleaseId("de.test.package", "artifact", 
"1.0.1");

        KieContainer kieContainer = ks.newKieContainer(releaseId);

        KieScanner kieScanner = ks.newKieScanner(kieContainer);
        kieScanner.scanNow();
    }
}

The error is:

DEBUG [main] (KieRepositoryImpl.java:92) - KieModule Lookup. ReleaseId 
de.test.package:artifact:1.0.1 was not in cache, checking classpath
DEBUG [main] (KieRepositoryImpl.java:98) - KieModule Lookup. ReleaseId 
de.test.package:artifact:1.0.1 was not in cache, checking maven repository
 WARN [main] (MavenSettings.java:47) - Environment variable M2_HOME is not set
DEBUG [main] (Logs.java:390) - Add publisher: 
com.google.inject.internal.InjectorImpl@5221dfe5

-----[explicit bindings]-------------------------------------------------------
0. ProviderInstanceBinding{key=Key[type=com.google.inject.Injector, 
annotation=[none]], source=[unknown source], scope=Scopes.NO_SCOPE, 
provider=Provider<Injector>}
[...] lines cut for brevity
198. 
ConstructorBinding{key=Key[type=org.apache.maven.lifecycle.DefaultSchedules, 
annotation=[none]], source=ClassRealm[maven, parent: ClassRealm[maven-parent, 
parent: null]], scope=Scopes.SINGLETON}
-----[implicit bindings]-------------------------------------------------------
-------------------------------------------------------------------------------

Exception in thread "main" java.lang.RuntimeException: 
org.apache.maven.project.ProjectBuildingException: Some problems were 
encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Could not find artifact 
de.test:maven-parent:pom:0.3 and 'parent.relativePath' points at wrong local 
POM @ line 15, column 10

        at 
org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:21)
        at 
org.kie.scanner.embedder.MavenProjectLoader.loadMavenProject(MavenProjectLoader.java:48)
        at org.kie.scanner.Aether.<init>(Aether.java:44)
        at org.kie.scanner.Aether.getAether(Aether.java:54)
        at 
org.kie.scanner.MavenRepository.getMavenRepository(MavenRepository.java:53)
        at org.kie.scanner.ArtifactResolver.<init>(ArtifactResolver.java:36)
        at 
org.kie.scanner.KieRepositoryScannerImpl.getArtifactResolver(KieRepositoryScannerImpl.java:77)
        at 
org.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:87)
        at 
org.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:83)
        at 
org.drools.compiler.kie.builder.impl.KieRepositoryImpl.loadKieModuleFromMavenRepo(KieRepositoryImpl.java:114)
        at 
org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:100)
        at 
org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:77)
        at 
org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:106)
        at de.test.configuration.kie.MainKieTest.main(MainKieTest.java:40)
Caused by: org.apache.maven.project.ProjectBuildingException: Some problems 
were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Could not find artifact 
de.test:maven-parent:pom:0.3 and 'parent.relativePath' points at wrong local 
POM @ line 15, column 10

        at 
org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:363)
        at 
org.kie.scanner.embedder.MavenEmbedder.buildProjects(MavenEmbedder.java:335)
        at 
org.kie.scanner.embedder.MavenEmbedder.readProjects(MavenEmbedder.java:319)
        at 
org.kie.scanner.embedder.MavenEmbedder.readProject(MavenEmbedder.java:312)
        at 
org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:19)
        ... 13 more

The problem seems to be, that the Maven which is internal to Drools/KIE, also 
tries to build the complete dependency tree, given by the pom.xml of the 
project in which KIE runs.

IMHO, this should not be, because the maven artifacts deployed for Drools, used 
at runtime, are independent from the artifacts used for building the project 
itself; those are needed at buildtime.

Is this problem just a misconception of how I think Drools should work or is it 
an actual bug?

Thanks in advance
Dominik

PS: Sorry, if the formatting is messed up, but I have to use Outlook for 
crafting this message ...

…………………………………………………………………
mit freundlichen Grüßen / kind regards
Dominik Sandjaja
Fon: +49 (0) 203 60878 183
Fax: +49 (0) 203 60878 222
e-mail: dominik.sandj...@it-motive.de

it-motive AG
Zum Walkmüller 6
47269 Duisburg
i...@it-motive.de
http://www.it-motive.de
……………………………………………………………………
Vorsitzender des Aufsichtsrats: Dr.-Ing. Jürgen Sturm
Vorstand: Horst-Dieter Deelmann (Vors.),  Matthias Heming, Christoph Tim Klose
HRB 9207, Amtsgericht Duisburg

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to