Я знаю, что здесь много информации ... но могут быть и другие люди с такими проблемами, и я думаю, что это было бы большим подспорьем для обсуждения этого вопроса или, по крайней мере, для получения приличного предложения / предложения.
Хорошо, позвольте мне начать с обзора окружающей среды.
У нас есть многомодульный проект maven с около 11 JAR. В зависимости от этих внутренних JAR-файлов 9 файлов WAR, из которых 8 помещаются в файл EAR. Оставшийся файл WAR развертывается отдельно как отдельное приложение. Когда создаются 8 WAR-файлов (которые находятся в EAR), они создаются как тощие WAR-файлы, поэтому результирующий EAR-файл имеет минимальный размер со всеми зависимостями в разделе APP-INF / lib. Все это работает без проблем. В настоящее время мы развертываем на удаленном сервере WebLogic 10.3, который имеет много памяти и ЦП, поэтому нагрузка не на наши отдельные машины. Мы также публикуем ночные снимки с использованием сервера непрерывной интеграции.
Размещаемые нами артефакты:
EAR-файл, содержащий 8 WAR-файлов, 11 внутренних JAR-файлов и сторонние библиотеки: ~ 70MB
Другой файл WAR: ~ 110 МБ
Некоторые наши инженеры-программисты хотели бы работать дома, через VPN-подключение и иметь варианты инкрементного / горячего развертывания. В противном случае из-за того, что мы развертываем с помощью веб-логики / maven, они вынуждены создавать весь файл EAR или файл WAR размером 110 МБ и загружать их через VPN. Это не весело и не быстро. Я читал на JRebel , и мне было интересно, кто-нибудь еще использует JRebel с многомодульным проектом maven для удаленного развертывания и как это сделать эффективно.
Из некоторых моих чтений рекомендуется «загрузить изменения» на сервер и иметь конфигурации rebel.xml, которые читают эти каталоги для этого конкретного развертывания, что ... хорошо, подводит нас к данной проблеме. Как сказать Maven, чтобы дамп измененных ресурсов / вновь скомпилированных файлов классов в какой-то другой каталог, чтобы я мог загрузить их на сервер и в соответствующие папки (наш сервер содержит что-то вроде 10+ экземпляров WebLogic, работающих на разных портах, по одному экземпляру на разработчик). Или просто попросите разработчиков поделиться своей папкой рабочего пространства с сетью и настроить файлы rebel.xml (например, в JAR-файле), указав соответствующую папку // COMPUTERNAME / workspace / jarProjectName / target / classes. Проблема, которую я предвижу, заключается в том, что каждый раз, когда они запускают WebLogic, он собирает все файлы .class и конфигурации и файлы JSP по сети, потому что файл rebel.xml выигрывает первым, и это будет ужасно по VPN. ПОСЛЕ ТОГО, КАК развертывание завершено, тогда горячее развертывание должно работать как обычно. Я просто не хочу ненужных накладных расходов на передачу всех классов по сети для первой загрузки, и не только, что иногда разработчики находятся в офисе, выключают свой компьютер и затем идут домой. Что происходит с JRebel / WebLogic?
Кажется, гораздо лучше увидеть только те файлы, которые изменились в различных проектах maven, и отправить их по FTP в нужное место на сервере, чтобы JRebel мог выполнить свою задачу полностью на стороне сервера. У кого-нибудь есть хороший способ сделать это? Или, может быть, у кого-то есть решение, которое вообще не включает JRebel. Давай поговорим.