Java ant与maven-类差异

Java ant与maven-类差异,java,maven,ant,Java,Maven,Ant,我正在从事一个将程序从ant转换为maven的项目,我认为我成功地完成了我的第一次迁移,但当我在araxis merge中进行比较时,它表明.class文件是不同的。我决定运行javap并反汇编输出类文件,看看为什么它们会显示为不同的(谢天谢地,只有7个)。然后,我对分解后的文件进行了比较,发现有很多不同之处。我很困惑为什么会存在这些差异,我很想看看是否有人能解释一下 我看到的一件事是maven版本包括以下两个LineNumberTable和LocalVariableTable输出,而ant版本

我正在从事一个将程序从ant转换为maven的项目,我认为我成功地完成了我的第一次迁移,但当我在araxis merge中进行比较时,它表明.class文件是不同的。我决定运行javap并反汇编输出类文件,看看为什么它们会显示为不同的(谢天谢地,只有7个)。然后,我对分解后的文件进行了比较,发现有很多不同之处。我很困惑为什么会存在这些差异,我很想看看是否有人能解释一下

我看到的一件事是maven版本包括以下两个LineNumberTable和LocalVariableTable输出,而ant版本则没有:

LineNumberTable:
    line 1207: 0
    line 1208: 5
  LocalVariableTable:
    Start  Length  Slot  Name   Signature
           0       6     0  this   Lbeans/BasicDao;
           0       6     1 password   Ljava/lang/String;
我还发现常量池的数量有所不同,比较:

   #63 = Methodref          #667.#668    //  java/lang/Integer.parseInt:(Ljava/lang/String;)I
致:


这对最终产品有何影响?非常感谢您的帮助

Maven似乎使用调试符号编译,而Ant则没有。但要确定的是,您必须检查两个系统的编译选项。javac是从同一路径使用相同的参数调用的吗?这可能会受到增量编译或不同的编译器/调用顺序的影响。检查最终产品是否受到影响的最好方法是单元测试和手动测试运行。看起来你是对的,@dunni。我花了一些时间在maven/ant中尝试不同的选项和设置,发现当我在maven中不进行调试而在ant中打开调试时,类文件是相同的。不幸的是,我只是负责移动项目(而且看起来他们没有任何单元测试=/。谢谢大家的反馈。
#63 = Methodref          #552.#553    //  java/lang/Integer.parseInt:(Ljava/lang/String;)I