Yes, this is the correct behaviour. Provided dependencies are "end stops",
at least should be. Will take a peek more, but i'd bet that scopes of dep
are wrong.

T

On Mon, Jun 13, 2022, 23:10 Slawomir Jaranowski <[email protected]>
wrote:

> Hi,
>
> Project with one dependency:
>
>   <dependencies>
>     <dependency>
>       <groupId>jakarta.transaction</groupId>
>       <artifactId>jakarta.transaction-api</artifactId>
>       <version>2.0.1</version>
>       <scope>compile</scope>
>     </dependency>
>   </dependencies>
>
> dependency:tree -D verbose
>
> org.apache.maven.its.dependency-tree:verbose:jar:1.0-SNAPSHOT
> \- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:compile
>    +- jakarta.enterprise:jakarta.enterprise.cdi-api:jar:3.0.1:provided
>    |  +- jakarta.el:jakarta.el-api:jar:4.0.0:provided
>    |  +- (jakarta.interceptor:jakarta.interceptor-api:jar:2.0.1:provided -
> omitted for duplicate)
>    |  +- jakarta.inject:jakarta.inject-api:jar:2.0.1:provided
>    |  \- jakarta.ejb:jakarta.ejb-api:jar:4.0.0:provided
>    \- jakarta.interceptor:jakarta.interceptor-api:jar:2.0.1:provided
>       \- jakarta.annotation:jakarta.annotation-api:jar:2.0.0:provided
>
>
> When change dependency to runtime:
>   <dependencies>
>     <dependency>
>       <groupId>jakarta.transaction</groupId>
>       <artifactId>jakarta.transaction-api</artifactId>
>       <version>2.0.1</version>
>       <scope>runtime</scope>
>     </dependency>
>   </dependencies>
>
> I have:
> org.apache.maven.its.dependency-tree:verbose:jar:1.0-SNAPSHOT
> \- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:runtime
>    +- jakarta.enterprise:jakarta.enterprise.cdi-api:jar:3.0.1:runtime
>    |  +- jakarta.el:jakarta.el-api:jar:4.0.0:runtime
>    |  +- (jakarta.interceptor:jakarta.interceptor-api:jar:2.0.1:runtime -
> omitted for duplicate)
>    |  +- jakarta.inject:jakarta.inject-api:jar:2.0.1:runtime
>    |  \- jakarta.ejb:jakarta.ejb-api:jar:4.0.0:runtime
>    \- jakarta.interceptor:jakarta.interceptor-api:jar:2.0.1:runtime
>       \- jakarta.annotation:jakarta.annotation-api:jar:2.0.0:runtime
>
> so transitive dependencies with scope provided are lost and changed to
> runtime.
>
> Is it correct behavior?
>
> It is cause for problem described in [1], [2]
>
> dependency:tree - without verbose mode show in both case:
>
>  org.apache.maven.its.dependency-tree:verbose:jar:1.0-SNAPSHOT
>  \- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:compile
>
> or
>
>  org.apache.maven.its.dependency-tree:verbose:jar:1.0-SNAPSHOT
>  \- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:runtime
>
> Logic responsible for it is in resolver-util (old eather-util) [3]
>
> [1] https://issues.apache.org/jira/browse/MENFORCER-394
> [2] https://issues.apache.org/jira/browse/MENFORCER-402
> [3]
>
> https://github.com/apache/maven-resolver/blob/master/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/transformer/JavaScopeDeriver.java#L48
>
>
>
>
> --
> Sławomir Jaranowski
>

Reply via email to