IntelliJ IDEA Aspectj (компилятор Ajc) занимает слишком много времени для загрузки классов после каждого Make

#java #performance #compiler-construction #intellij-idea #aspectj

#java #Производительность #построение компилятора #intellij-idea #aspectj

Вопрос:

Интересно, есть ли способ сократить время компиляции при использовании компилятора Ajc с IntelliJ. У меня довольно большой проект, с которым я хотел бы использовать AspectJ, но, к сожалению, когда я попытался поработать с ним, я обнаружил, что Ajc требуется слишком много времени для загрузки всех классов, и он делает это каждый раз, когда я нажимаю Make (сохранить файл .java с плагином режима Eclipse). Таким образом, каждое крошечное изменение вызывает 3 секунды загрузки класса… Есть ли способ сократить это время? Желательно вообще избавиться от загрузки классов. Это занимает очень много времени, как и сейчас, и мне пришлось прекратить использовать Ajc и переключиться обратно на Javac, который почти мгновенный по сравнению с Ajc. Я использую IntelliJ IDEA 10, AspectJ 1.6.11. Не уверен, нужна ли дополнительная информация.

Ответ №1:

На данный момент IDEA использует classpath в качестве aspectpath — это позволяет избежать настройки пользовательского интерфейса, но приводит к длительному времени компиляции и увеличению потребления памяти. Это особенно заметно в больших проектах.

В IDEA 11 (начиная со следующего EAP) aspectpath будет настраиваться.

Комментарии:

1. Только что выпущена сборка EAP 110.137. Если ваш проект основан на Maven, то путь к аспекту должен быть настроен автоматически при повторном импорте.

Ответ №2:

Для справки, IntelliJ v11 должен был содержать это исправление для AJC, но они обнаружили ошибку с инкрементной компиляцией для AJC, поэтому они полностью отключили инкрементную компиляцию AJC в v11, что, очевидно, еще больше ухудшает время компиляции. См http://youtrack.jetbrains.com/issue/IDEA-76479