Let me be more precise here; the dependency:analyze seems to miss a
whole group of references to static fields. Both static imports and
references to fields. In my code sample, I can do the following:

javap -v bar/BarMain.class

Classfile bar/BarMain.class
  Last modified 25.nov.2015; size 583 bytes
  MD5 checksum 02168be555cf779b31a4790f97b202a7
  Compiled from "BarMain.java"
public class bar.BarMain
  minor version: 0
  major version: 49
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
   #1 = Class              #23            // foo/Main
   #2 = Methodref          #9.#24         // java/lang/Object."<init>":()V
   #3 = Fieldref           #25.#26        //
java/lang/System.out:Ljava/io/PrintStream;
   #4 = String             #27            // SC compile
   #5 = Methodref          #28.#29        //
java/io/PrintStream.println:(Ljava/lang/String;)V
   #6 = Class              #30            // foo/Test2
   #7 = String             #31            // AZ 42
   #8 = Class              #32            // bar/BarMain
   #9 = Class              #33            // java/lang/Object
  #10 = Utf8               <init>
  #11 = Utf8               ()V
  #12 = Utf8               Code
  #13 = Utf8               LineNumberTable
  #14 = Utf8               LocalVariableTable
  #15 = Utf8               this
  #16 = Utf8               Lbar/BarMain;
  #17 = Utf8               main
  #18 = Utf8               ([Ljava/lang/String;)V
  #19 = Utf8               args
  #20 = Utf8               [Ljava/lang/String;
  #21 = Utf8               SourceFile
  #22 = Utf8               BarMain.java
  #23 = Utf8               foo/Main
  #24 = NameAndType        #10:#11        // "<init>":()V
  #25 = Class              #34            // java/lang/System
  #26 = NameAndType        #35:#36        // out:Ljava/io/PrintStream;
  #27 = Utf8               SC compile
  #28 = Class              #37            // java/io/PrintStream
  #29 = NameAndType        #38:#39        // println:(Ljava/lang/String;)V
  #30 = Utf8               foo/Test2
  #31 = Utf8               AZ 42
  #32 = Utf8               bar/BarMain
  #33 = Utf8               java/lang/Object
  #34 = Utf8               java/lang/System
  #35 = Utf8               out
  #36 = Utf8               Ljava/io/PrintStream;
  #37 = Utf8               java/io/PrintStream
  #38 = Utf8               println
  #39 = Utf8               (Ljava/lang/String;)V
{
  public bar.BarMain();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #2                  // Method
java/lang/Object."<init>":()V
         4: return
      LineNumberTable:
        line 25: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lbar/BarMain;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
         0: getstatic     #3                  // Field
java/lang/System.out:Ljava/io/PrintStream;
         3: ldc           #4                  // String SC compile
         5: invokevirtual #5                  // Method
java/io/PrintStream.println:(Ljava/lang/String;)V
         8: getstatic     #3                  // Field
java/lang/System.out:Ljava/io/PrintStream;
        11: ldc           #7                  // String AZ 42
        13: invokevirtual #5                  // Method
java/io/PrintStream.println:(Ljava/lang/String;)V
        16: return
      LineNumberTable:
        line 28: 0
        line 29: 8
        line 30: 16
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      17     0  args   [Ljava/lang/String;
}
SourceFile: "BarMain.java"

As we can see the "import" class "foo/Test" is item #6/#30 and
referenced in the constant pool for the BarMain class. The dependency
analyzer does not seem to catch this. I'm a bit of a n00b in this
regard, anyone have any tips on how to do this ?

Kristian

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to