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 >
