2010-08-16 4 views
2

Итак, у меня есть интересный вопрос. У меня есть три человека, использующих один и тот же файл сборки ant build, создающий файл jar для проекта Eclipse, который не изменился через два месяца. Каждый из них выполняет сборку с использованием этого XML-файла, и каждый из нас получает банку разного размера (62 КБ, 78 КБ и 101 КБ). Кроме того, когда я нахожусь на них, они совершенно разные.Размеры банок разные для разных людей

Что может вызвать эту разницу?

+0

Когда вы запускаете winmerge, это касается сжатого * или * несжатого jar? –

+0

Являются ли эти результаты на одной и той же платформе или разных? Кроме того, даже если файлы JAR отличаются друг от друга, если вы распаковываете их, все файлы идентичны? –

+0

А, хорошо. Я извлек их и сравнил несжатую версию. Два были более похожими друг на друга. Интересно, что я использую Ant 1.7.1, но другие используют Ant 1.7.0. Кроме того, все трое из нас используют только 1.7.0. Weird. – Dave

ответ

1

Единственное различие, которое я могу видеть, может быть:

  1. Разница в переменных окружения, что приводит к разнице в составителей. Использует ли ваш скрипт антивируса какую-либо другую утилиту в дополнение к регулярному javac для компиляции или упаковки? Пример: использует ли AspectJ или какую-либо другую утилиту сборки? Это зависит от переменных окружающей среды, которые различны для разных машин?
  2. Разница в размерах зависимых банок (один из них может иметь commons-logging-1.8, в то время как другой может иметь другую версию, например)
  3. Вы ссылаетесь на любую другую утилиту сборки из муравья, которая выполняет управление зависимостями, например плющ, например?

Вы сказали, что winmerge показывает драматические различия. Являются ли эти w.r.t. размер различных компонентов внутри банки или существуют структурные различия (структуры папок, разные файлы и т. д.)? Последнее было бы более озадачивающим.

+0

Отличные предложения. 1: могут быть разные EV, но мы все используем один и тот же компилятор и версию. Никаких других утилит для упаковки не используется. 2: это стоит посмотреть. Мы используем много продуктов FOSS/COTS, поэтому различные версии могут быть подобраны в зависимости от порядка сборки и включения (это страшная мысль). 3: ничего подобного. Различия, показанные в winmerge, показывают, что байт-код отличается. Длина разная, и примерно 1/2 контент отличается. – Dave

7

Первое, что нужно попробовать: скопировать их все на один компьютер, распаковать их в разные директории и запустить WinDiff (или что-то еще) в несжатой версии. Это сделает намного более очевидным то, что происходит.

Другие возможности - разные версии Java, использующие разные уровни сжатия по умолчанию?

+0

Я положил их на один компьютер. После извлечения их я видел очень очевидную разницу в некоторых файлах метрик, которые я не смог удалить из своего проекта. Помимо этого, имена и структуры файлов классов были одинаковыми. Однако по некоторым причинам файлы классов помечались как разные. Мы также используем Java 1.6.0.17, и уровни сжатия должны быть одинаковыми. Думаю, я нашел больше вопросов, чем ответов. – Dave

3

В дополнение к предложению Джона, есть ли пользовательские предпочтения, которые скрипт для муравьев может срабатывать?

E.g. build.properties файл, который может находиться в каталоге проекта, домашнем каталоге пользователя и т. Д.

Возможно, что на рабочем месте каждого пользователя существуют различные настройки проекта.

+0

Не знаю. Мне нужно будет посмотреть, существует ли этот файл, и, возможно, если кто-нибудь из вас втянется. Не могли бы вы указать мне в направлении поиска других? – Dave

+0

@ Dopyiii. Ищите '' или '' задачи в вашей сборке.xml и в любых файлах, импортированных на build.xml верхнего уровня. –

1

Звучит так, что папки, которые сотрясаются вместе, не пустеют, когда процесс начинается.

Смежные вопросы