[ 
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)

Reply via email to