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