[ https://issues.apache.org/jira/browse/MDEP-757?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17701622#comment-17701622 ]
Richard Eckart de Castilho commented on MDEP-757: ------------------------------------------------- Analyzing the bytecode of the consumer class, the reference to `library.LibraryObject` can be seen in the method reference that is in the constant pool. {noformat} % javap -c -verbose consumer.ActualImplementationClass Classfile .../consumer/ActualImplementationClass.class Last modified Mar 17, 2023; size 458 bytes MD5 checksum bd73f558e3ab51f8c30011d78a7ffe6b Compiled from "ActualImplementationClass.java" public class consumer.ActualImplementationClass extends provider.AbstractBaseClass minor version: 0 major version: 52 flags: ACC_PUBLIC, ACC_SUPER Constant pool: #1 = Methodref #2.#3 // provider/AbstractBaseClass."<init>":()V #2 = Class #4 // provider/AbstractBaseClass #3 = NameAndType #5:#6 // "<init>":()V #4 = Utf8 provider/AbstractBaseClass #5 = Utf8 <init> #6 = Utf8 ()V #7 = Methodref #8.#9 // consumer/ActualImplementationClass.getObject:()Llibrary/LibraryObject; #8 = Class #10 // consumer/ActualImplementationClass #9 = NameAndType #11:#12 // getObject:()Llibrary/LibraryObject; #10 = Utf8 consumer/ActualImplementationClass #11 = Utf8 getObject #12 = Utf8 ()Llibrary/LibraryObject; #13 = Utf8 Code #14 = Utf8 LineNumberTable #15 = Utf8 LocalVariableTable #16 = Utf8 this #17 = Utf8 Lconsumer/ActualImplementationClass; #18 = Utf8 doSomething #19 = Utf8 SourceFile #20 = Utf8 ActualImplementationClass.java { public consumer.ActualImplementationClass(); descriptor: ()V flags: ACC_PUBLIC Code: stack=1, locals=1, args_size=1 0: aload_0 1: invokespecial #1 // Method provider/AbstractBaseClass."<init>":()V 4: return LineNumberTable: line 5: 0 LocalVariableTable: Start Length Slot Name Signature 0 5 0 this Lconsumer/ActualImplementationClass; } SourceFile: "ActualImplementationClass.java" {noformat} However, the {{ConstantPoolParser.getConstantPoolClassReferences( byteCode )}} call in {{org.apache.maven.shared.dependency.analyzer.asm.DependencyClassFileVisitor.visitClass(String, InputStream)}} does not seem to return that. It only finds {{[provider/AbstractBaseClass, consumer/ActualImplementationClass]}}. > bug with "non-test scoped test only dependencies found" > ------------------------------------------------------- > > Key: MDEP-757 > URL: https://issues.apache.org/jira/browse/MDEP-757 > Project: Maven Dependency Plugin > Issue Type: Bug > Components: analyze > Affects Versions: 3.2.0 > Environment: mvn --version > Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d) > Maven home: /usr/local/Cellar/maven/3.8.1/libexec > Java version: 11.0.11, vendor: AdoptOpenJDK, runtime: > /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home > Default locale: en_US, platform encoding: UTF-8 > OS name: "mac os x", version: "11.4", arch: "x86_64", family: "mac" > Reporter: Henning Schmiedehausen > Assignee: Henning Schmiedehausen > Priority: Major > Attachments: MDEP-757-reproducer-2-rec.zip > > > Starting with 3.2.0, I see this problem in one of my project modules: > {noformat} > [INFO] --- maven-dependency-plugin:3.2.0:analyze-only (basepom.default) @ > foundation --- > [WARNING] Non-test scoped test only dependencies found: > [WARNING] com.fasterxml.jackson.core:jackson-databind:jar:2.12.2:compile > {noformat} > This is not correct: > {noformat} > % cd lib/foundation > % grep -r databind src/main > src/main/java/dev/data/DataSet.java:import > com.fasterxml.jackson.databind.annotation.JsonDeserialize; > src/main/java/dev/data/DataSet.java:import > com.fasterxml.jackson.databind.annotation.JsonSerialize; > src/main/java/dev/data/WriteableLocator.java:import > com.fasterxml.jackson.databind.annotation.JsonSerialize; > src/main/java/dev/data/ObjectMetadata.java:import > com.fasterxml.jackson.databind.annotation.JsonDeserialize; > src/main/java/dev/data/ObjectMetadata.java:import > com.fasterxml.jackson.databind.annotation.JsonSerialize; > src/main/java/dev/data/DataDefinition.java:import > com.fasterxml.jackson.databind.annotation.JsonSerialize; > src/main/java/dev/data/ObjectAttribute.java:import > com.fasterxml.jackson.databind.annotation.JsonDeserialize; > src/main/java/dev/data/ObjectAttribute.java:import > com.fasterxml.jackson.databind.annotation.JsonSerialize; > src/main/java/dev/data/ObjectDefinition.java:import > com.fasterxml.jackson.databind.annotation.JsonDeserialize; > src/main/java/dev/data/ObjectDefinition.java:import > com.fasterxml.jackson.databind.annotation.JsonSerialize; > src/main/java/dev/data/ImmutableDataObject.java:import > com.fasterxml.jackson.databind.annotation.JsonSerialize; > {noformat} > So this dependency is used all over the place in the main sources (which is > why it can not be in test scope). However, the plugin no longer (it did in > 3.1.2) recognize it (all the uses are just annotations, so I guess that is > the problem) and raises this error. -- This message was sent by Atlassian Jira (v8.20.10#820010)