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


Автор: Andrey1 11.2.2011, 10:57
Может кто знает как делать дистр проекта  (не обязательно .jar) в отличном от ./dist и ./build месте?

Это нужно по двум причинам: 
(1) дистр синхронизируется через SVN с удаленным сервером (где проект и запускается). SVN создает свои файлы в папке, которые потеряются при ее удалении. А NetBeans когда пересоздает ./dist ее самую и удаляет.
(2) нужно иметь возможность запускать проект и вести разработку одновременно. Так как NetBeans при пересборке любит удалять файлы, а удалять их не получится, так как часть классов могут быть запущены и заблокированы, то и пересобрать проект (когда он запущен) может не получиться.


Автор: COVD 12.2.2011, 16:39
Мы папку dist не включаем в репозиторий. Когда готова новая версия, то делаем все вручную - через программу удаленного доступа (Radmin) останавливаем приложение, переименовываем текущий dist и подкладываем новый dist. В случае проблем с новой версией легко вернуться на старую версию перезапуском приложения, поскольку dist предыдущей версии лежит рядом переименованный. На мой взгляд автоматизировать это средствами SVN смысла нет. Зачем лишние проблемы.

Содержимое папки dist можно автоматически (при каждом build) копировать в нужное вам место добавлением строки в build.xml :

 
<description>Builds, tests, and runs the project MyProject.</description>
    <import file="nbproject/build-impl.xml"/>
    <target name="-post-jar"> <copy file="${dist.jar}/" todir="."/> </target>    
    <!--

Автор: Andrey1 14.2.2011, 21:38
Причины использовать для синхронизации SVN есть. Осталось понять, как лучше это сделать.

Автор: COVD 15.2.2011, 00:05
Цитата

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

?
Как такое возможно? Наверное же запускается одна копия, а девелопмент происходит на другой копии проекта. А SVN может быть использован для их синхронизации. Для этого приложение придется перезапустить. Очевидно, вручную. Разве что у вас всякий билд автоматически влечет за собой сабмит напрямую на сервер. Но тогда сабмит не пройдет, а билд должен быть успешен.

Папку dist нельзя класть в SVN потому что она действительно удаляется и создается заново при билде. Но ее содержимое можно копировать в другую, неудаляемую папку. И спокойно сабмитить копию в SVN. В приведенном мною примере build.xml последним шагом билда будет копирование файла *.jar из dist в корень, т.е. рядом с папкой dist. Вот эту копию файла и можно включить в SVN и сабмитить при необходимости.

Автор: Andrey1 23.2.2011, 12:27
Добавлено @ 12:36
Цитата(COVD @  15.2.2011,  00:05 Найти цитируемый пост)
Как такое возможно? Наверное же запускается одна копия, а девелопмент происходит на другой копии проекта. 

Проект сам является запускным и сам же является либой для другого проекта. Когда он запускается, в связанной проекте нельзя сделать clean-build.

Цитата(COVD @  15.2.2011,  00:05 Найти цитируемый пост)
Для этого приложение придется перезапустить. Очевидно, вручную. 

Да, в ручную и надо. Не при каждом обновлении проекта в SVN его нужно перезапускать на удаленном сервере.

Цитата(COVD @  15.2.2011,  00:05 Найти цитируемый пост)
В приведенном мною примере build.xml последним шагом билда будет копирование файла *.jar из dist в корень, т.е. рядом с папкой dist. Вот эту копию файла и можно включить в SVN и сабмитить при необходимости.

Да, наверное так и стоит делать. Только мне нужно синхронизировать папку с классами, но это делается аналогично.
 *.jar вообще-то тоже нужно синхронизовать, но я думаю, что это лучше делать через папку с файлами, а на сервере уже собирать jar заново.

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