Java Ant Performance при удалении каталога - PullRequest
3 голосов
/ 19 апреля 2011

Здравствуйте, стекировщики,

Большинство файлов сборки Ant, которые я видел в Интернете, содержат «чистую» цель, которая всегда удаляет каталог с помощью deltree и воссоздает этот каталог, куда будут выводиться все двоичные файлы. Это проблема с производительностью? То есть исходный файл должен компилироваться только в том случае, если он был изменен, но если каталог, содержащий все двоичные файлы, удаляется после каждой сборки, то все файлы должны быть перекомпилированы в каждой сборке. Это то, что происходит, и если да, то я ошибаюсь, говоря, что это может действительно повредить производительности.

В качестве дополнительного вопроса, является ли это абсолютно необходимым или настоятельно рекомендуется при использовании Ant? Моя команда использует Dropbox для синхронизации с несколькими машинами, и мы не хотим, чтобы этот шаг выполнялся при каждом запуске.

Спасибо за любой вклад!

-alanhorizon

Ответы [ 4 ]

2 голосов
/ 19 апреля 2011

Очистка обычно излишня, если вы добавляете или изменяете существующие классы. javac проверяет временную метку class файлов, чтобы поддерживать их актуальность.

Это становится необходимым, если некоторые классы были удалены. Если вы сначала не выполните очистку, вы получите устаревшие class файлы, иногда вызывающие проблемы с зависимостями.

И нет, выполнение очистки - это , а не . по сравнению с другими задачами, вовлеченными в процесс сборки / развертывания.

2 голосов
/ 19 апреля 2011

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

При этом, почему в мире вы делитесь источником с командой через Dropbox?Вы должны использовать Subversion или Git (или множество других) для управления контролем источников.Они предназначены для этого, и вы захотите их, как только вы столкнетесь с чем-то потенциально сложным, например, ветвлением и слиянием.Попробуйте использовать GitHub , если хотите избежать много настроек.

0 голосов
/ 20 февраля 2015

Чистка обычно необходима, чтобы уменьшить вероятность ошибок из-за переименований, и вещи могут остаться.Однако я не рекомендую делать это в самом Ant.

Если вы используете git, используйте задачу exec, чтобы выполнить команду

git clean -fdx .
git reset --hard HEAD

из корня вашего проекта.файл.Это удалит все файлы, которые не являются частью системы контроля версий, и вернет их в верхнюю часть извлеченного состояния.

В противном случае я бы сделал cmd /c rd /s в Windows или rm -rf в UNIX в папках сборки..

0 голосов
/ 19 апреля 2011

Документация о командах javac гласит: Только файлы Java, у которых нет соответствующего файла .class или файл классов которых старше, чем файл .java, будут компилироваться.нет необходимости каждый раз чистить ресурсы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...