renatoathaydes / jbuild

JBuild is a intentionally simple, small build tool for Java.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fails to resolve all dependencies of Infinispan

renatoathaydes opened this issue · comments

Several levels of POM parents seem to break dependency resolution... the dependencies are declared up 2 POMs, which should work but fails for some reason:

jbuild install -s runtime org.infinispan:infinispan-jcache:13.0.10.Final -d infinispan
Will install 1 artifact at infinispan
Successfully installed 1 artifact at infinispan
JBuild success in 478 ms!

Installing infinispan-core seems to work fine though.

Here's what Maven installs for inifnispan-jcache with runtime scope:

cache-api-1.1.1.jar                         infinispan-jcache-13.0.10.Final.jar         jboss-threads-2.3.3.Final.jar               reactive-streams-1.0.3.jar
caffeine-2.8.4.jar                          infinispan-jcache-commons-13.0.10.Final.jar jgroups-4.2.18.Final.jar                    rxjava-3.0.4.jar                                   
infinispan-commons-13.0.10.Final.jar        jakarta.transaction-api-1.3.3.jar           protostream-4.4.3.Final.jar                 slf4j-simple-1.7.36.jar
infinispan-core-13.0.10.Final.jar           jboss-logging-3.4.1.Final.jar               protostream-types-4.4.3.Final.jar           wildfly-common-1.3.0.Final.jar

mvn dependency:tree fails for this artifact, interestingly:

▶ mvn dependency:tree org.infinispan:infinispan-jcache:13.0.10.Final
[INFO] Scanning for projects...
Downloading from central: https://repo.maven.apache.org/maven2/org/infinispan/infinispan-jcache/maven-metadata.xml

...

Downloaded from central: https://repo.maven.apache.org/maven2/org/infinispan/infinispan-jcache/14.0.0.Dev04/infinispan-jcache-14.0.0.Dev04.jar (120 kB at 543 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.875 s
[INFO] Finished at: 2022-07-26T11:30:18+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to parse plugin descriptor for org.infinispan:infinispan-jcache:14.0.0.Dev04 (/Users/renatoathaydes/.m2/repository/org/infinispan/infinispan-jcache/14.0.0.Dev04/infinispan-jcache-14.0.0.Dev04.jar): No plugin descriptor found at META-INF/maven/plugin.xml -> [Help 1]

POM hierarchy:

  • org.infinispan:infinispan-jcache:13.0.10.Final (dependencies exist without scope or version, they come from parent POMs).
    • org.infinispan:infinispan-jcache-parent:13.0.10.Final (no deps)
      • org.infinispan:infinispan-parent:13.0.10.Final (deps exist without scope or version, dependencyManagement includes many deps, including a BOM)
        • org.infinispan:infinispan-bom:13.0.10.Final (BOM - dependencyManagement contains all versions for infinispan).

There was no bug fetching BOMs or parent POMs... the problem is that dependencies appear both with scope compile and test, and JBuild is overwriting scopes when that happens.

e.g. in infinispan-parent:

         <dependency>
            <groupId>org.infinispan</groupId>
            <artifactId>infinispan-core</artifactId>
            <type>test-jar</type>
            <scope>test</scope>
            <version>${version.infinispan}</version>
         </dependency>

The root cause of the issue is that JBuild ignores dependency's <type>.

Should support the default ones: https://maven.apache.org/ref/3.8.6/maven-core/artifact-handlers.html

As JBuild can already download sources and javadocs, it's just a matter of adding this to the POM definition as well.