Мне немного неясно, что вы описываете.
Вы упоминаете, что хотите, чтобы это работало для сборок PDE, но сборки PDE происходят в основном вне рабочей области с использованием скриптов ant. Они не используют IResource, Builder или IResourceDeltaEvent.
Я предполагаю, что вы на самом деле имеете в виду не PDE-сборки, а построение проектов плагинов внутри рабочей области.
В общем, Eclipse (в частности JDT) ожидает, что он полностью контролирует выходные папки. Тем не менее, есть опция в Preferences -> Java -> Building -> Output Folder, которая называется «Перестроить файлы классов, сгенерированные другими». Убедитесь, что это отключено. Eclipse не должен пытаться восстановить файлы классов, к которым вы прикасаетесь. Если ваш конструктор касается только файлов классов, он не будет запускать другие сборки после изменения файлов классов. Единственное, что вы должны быть осторожны, чтобы не компилировать вещи дважды (и я думаю, что это проблема, которую вы описываете).
В качестве альтернативы вам может быть проще реализовать CompilationParticipant (и точку расширения org.eclipse.jdt.core.compilationParticipant). Это позволит вам точно знать, когда JDT вызывает компиляцию и что именно она компилирует.
Кроме того, вы будете уведомлены об операциях сверки (т. Е. Об изменениях в рабочих копиях, которые не были сохранены). Это может быть полезно для вас, если вы хотите манипулировать файлами по мере ввода.