Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > NetBeans: Недостатки при сборке


Автор: Andrey1 26.8.2009, 17:54
Хочу поделиться ... э... непонятками при сборке приложений (веб-приложение с связанными  java модулями) в NetBeans (6.7.1):
1) Сборка (при любом малом изменении в коде) относительно долго идет, из-за всякой фигни:
1*) Тупая пересборка jar"ников модулей, от которых проект зависит. Да, clean-build. Тупо и долго. Почему нельзя перекомпилить только изменненые классы и их же заменить в jar"нике?
2*) Почему нельзя jar"ник и нужные классы частично держать в памяти? Как только все идет через хард, понятно, что все будет медленно работать.
3*) Почему NetBeans не умеет перегружать изменные jar-либы проекта? smile
4*) И все тоже самое для war-архива (если он используется).
2) Часто при попытке деплоя выскакивает некая ошибка (вроде `D:\...\MyClass.java:7: package mypackage does not exist'), которая потом куда-то внезапно пропадает при повторной сборке.
3) Передеплой не всегда нормально работает из-за того, что tomcat почему-то "хватает" и не отпускает какие-то jar"ники, которые проект использует (помогает только stop-start томката).

Что в этим всем делать? smile

Автор: COVD 26.8.2009, 19:04
Цитата

3) Передеплой не всегда нормально работает 

А вы как это делаете? Я сначала удаляю из webapp старый war. Дожидаюсь сообщения в консоли, что приложение удалено. Потом кладу в webapp новую версию. Дожидаюсь сообщения, что приложение стартовало. Обычно все нормально. Правда у меня много мелких приложений (без обилия библиотек), которые быстро собираются и быстро стартуют-удаляются.

Автор: Andrey1 27.8.2009, 09:02
Цитата(COVD @  26.8.2009,  19:04 Найти цитируемый пост)
А вы как это делаете?

Через закладку Services - жму undeploy. Потом жму Run.

Автор: powerOn 27.8.2009, 11:00
Цитата(Andrey1 @  26.8.2009,  18:54 Найти цитируемый пост)
Да, clean-build. Тупо и долго. Почему нельзя перекомпилить только изменненые классы и их же заменить в jar"нике?

Дык, Clean-Build - это "Стереть и построить". Можно делать просто Build - тогда пересоберутся только измененные классы.

Цитата(Andrey1 @  26.8.2009,  18:54 Найти цитируемый пост)
Почему нельзя jar"ник и нужные классы частично держать в памяти? Как только все идет через хард, понятно, что все будет медленно работать.

Смонтируй в своей ОС in-memory диск и на время работы храни проект на нем, если хочешь чтоб скорость доступа была как в оперативной памяти.  smile 

Цитата(Andrey1 @  26.8.2009,  18:54 Найти цитируемый пост)
3*) Почему NetBeans не умеет перегружать изменные jar-либы проекта? smile
4*) И все тоже самое для war-архива (если он используется).

При дебаге хоть по одному классу перегружай (Apply Changes). В остальном случае трудно сказать, поскольку я таких проблем не испытывал.

Цитата(Andrey1 @  26.8.2009,  18:54 Найти цитируемый пост)
2) Часто при попытке деплоя выскакивает некая ошибка (вроде `D:\...\MyClass.java:7: package mypackage does not exist'), которая потом куда-то внезапно пропадает при повторной сборке.

Не сталкивался.

Цитата(Andrey1 @  26.8.2009,  18:54 Найти цитируемый пост)
3) Передеплой не всегда нормально работает из-за того, что tomcat почему-то "хватает" и не отпускает какие-то jar"ники, которые проект использует (помогает только stop-start томката).

Возможно поможет опция в contex.xml для неблокировки jar-ов. Но обычно такая штука бывает если делать Apply Changes в дебаг режиме, но тут ничего не поделаешь - особенность JVM.

А в целом: ничего идеального не существует. ;)

Автор: Andrey1 28.8.2009, 09:19
Цитата(powerOn @  27.8.2009,  11:00 Найти цитируемый пост)
Дык, Clean-Build - это "Стереть и построить". Можно делать просто Build - тогда пересоберутся только измененные классы.

Это да. Только проект, который зависит от java модулей, вызывает почему-то Clean-Build для модулей, если в них были изменения.

Цитата(powerOn @  27.8.2009,  11:00 Найти цитируемый пост)
Смонтируй в своей ОС in-memory диск и на время работы храни проект на нем, если хочешь чтоб скорость доступа была как в оперативной памяти.  smile 

Да, у меня была такая идея, тока слишком много ненужных мне проблем может быть. 
И ничего смешного smile .

Цитата(powerOn @  27.8.2009,  11:00 Найти цитируемый пост)
При дебаге хоть по одному классу перегружай (Apply Changes).

Ага, только  "Apply Changes" не работает, если меняется схема класса. Ну и с jar-никами не работает в принципе.

Цитата(powerOn @  27.8.2009,  11:00 Найти цитируемый пост)
Но обычно такая штука бывает если делать Apply Changes в дебаг режиме, но тут ничего не поделаешь - особенность JVM

С этим проблем не было, хвала буддийскому богу smile.

Цитата(powerOn @  27.8.2009,  11:00 Найти цитируемый пост)
А в целом: ничего идеального не существует. ;)

Понятно. Но всегда нужно стремиться к лучшему smile.

Автор: powerOn 30.8.2009, 11:17
Если у вас есть четкое понимание того, как должен происходить билд для связанных проектов, то в принципе, ничто не мешает самостоятельно подкорректировать ant-скрипты.

Автор: Andrey1 31.8.2009, 15:22
Цитата(powerOn @  30.8.2009,  11:17 Найти цитируемый пост)
Если у вас есть четкое понимание того, как должен происходить билд для связанных проектов, то в принципе, ничто не мешает самостоятельно подкорректировать ant-скрипты.

Да, все к этому и идет. Тем более, если захочется иметь два релиза: test и production и хочется выкладывать классы прямо на сервер (без копирования либ).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)