2010-08-16 114 views
2

所以,我有一个有趣的问题。我有三个人使用相同的ant build xml文件为两个月内未更改的Eclipse项目创建一个jar文件。我们每个人都使用这个xml文件进行构建,我们每个人都得到一个不同大小的jar(62 KB,78 KB和101 KB)。另外,当我在他们身上做了一个winmerge时,他们有很大的不同。不同人的罐子尺寸不同

什么可能会导致这种差异?

+0

运行winmerge时,是针对* compressed *还是* uncompressed * jar? – 2010-08-16 19:51:06

+0

这些结果是在同一个平台上还是在不同的平台上?另外 - 即使JAR文件不同,如果解压它们,所有文件都是相同的? – 2010-08-16 19:52:15

+0

啊,好点。我提取它们并比较了未压缩的版本。其中两个比另一个更相似。有趣的是,我似乎在使用Ant 1.7.1,但其他人正在使用Ant 1.7.0。除此之外,我们三个人都只使用1.7.0。奇怪的。 – Dave 2010-08-16 22:00:10

回答

1

我能看到的唯一区别可能是:导致编译器差异

  1. 差异的环境变量。除了常规的javac编译或打包外,您的ant脚本是否还使用其他实用程序?例如:它使用AspectJ还是其他一些组装工具?这是否依赖于不同机器的环境变量?
  2. 依赖瓶子的大小差异(其中一个可能有commons-logging-1.8,而另一个可能具有不同的版本)
  3. 您是否从inv进行了依赖管理的其他构建实用程序常春藤比如说?

你说winmerge显示出巨大的差异。这些是否是w.r.t.罐子里面各种组件的大小还是存在结构差异(文件夹结构,不同的文件等)?后者肯定会更令人困惑。

+0

优秀的建议。 1:可能有不同的EV,但我们都使用相同的编译器和版本。没有使用其他包装实用程序。 2:这值得研究。我们使用许多FOSS/COTS产品,因此根据构建和包含顺序可能会选择不同的版本(这是一个可怕的想法)。 3:没有那样的。 winmerge中显示的差异表明字节码不同。长度不同,大约1/2的内容是不同的。 – Dave 2010-08-17 15:40:49

7

首先要尝试:将它们全部复制到同一台计算机上,将它们解压缩到不同的目录中,然后在未压缩的版本上运行WinDiff(或其他)。这会让事情变得更加明显。

其他可能性 - 默认情况下不同版本的Java使用不同的压缩级别?

+0

我把它们放在同一台计算机上。解压缩之后,我看到一些指标文件存在非常明显的差异,我无法从我的项目中删除这些文件。除此之外,类文件名和结构是相同的。但是,由于某些原因,类文件被标记为不同。我们也都使用Java 1.6.0.17,并且压缩级别应该都是相同的。我想我发现了更多的问题而不是答案。 – Dave 2010-08-16 23:55:50

3

除了乔恩的建议,有没有用户的喜好,蚂蚁脚本可能会拾起?

E.g. build.properties文件可以存在于项目目录,用户主目录等中。

可能是在每个人的工作站上存在不同的项目定制。

+0

我不知道。我将不得不看看这个文件是否存在,或者是否有其他人被吸入。你能指点我的方向寻找其他人吗? – Dave 2010-08-16 23:53:33

+0

@Dopyiii。在您的构建中寻找“'或''任务。xml以及顶层build.xml导入的任何文件中。 – 2010-08-17 12:02:55

1

当进程开始时,像文件夹一起震动的声音不是空的。