2009-12-10 5 views
4

У меня есть процесс сборки, который создает ухо довольно сложным образом (несколько баннеров EJB, пара войн, пара сарсов (которые специфичны для JBoss). Ant-процесс для сборки этого вместе несколько сложнее.Стратегии развертывания взорванного уха

Что является лучшей стратегией не воссоздать логику создания создания EJB в АНТ, но все еще быть в состоянии развернуть взорвался на сервер приложений или в ухе для контроля качества и производства.

Хотя я обеспокоен JBoss, вопрос действительно имеет отношение к любому серверу приложений, который поддерживает развертывание разнесенных ушей, и действительно больше об ANT, о том, как избежать двух разных целей, воссоздающих логику cr есть zip-файл и копирование в каталог.

+13

Звуки болезненные :) – cletus

+7

Wow. Хорошо, что есть теги, которые помогают дать контекст этим вопросам. Этот титул потрясающий! – Goyuix

+1

pop quiz: какой будет скрипт для проверки классов и свойств, упакованных в ухо? «хирургия уха» :) – pmu

ответ

5

Я нашел, что самое лучшее для нас - это создание содержимого ZIP/EAR/WAR/JAR в разобранном виде в файловой системе, а затем в качестве последнего шага zip/ear/war/jar it up в файл.

Это позволяет нам выполнять шаги пост-обработки, которые знают только файлы, а не записи в zip-файле, что обычно намного проще. Если вы работаете с разнесенным развертыванием и сервером, который собирает измененные файлы в развернутом развертывании, вы можете просто использовать rsync для обновления только тех файлов, которые были фактически изменены при развертывании сервера.

У вас будет здание в одной цели и упаковка в другую, что упростит выполнение обоих задач.


ответ См Alexander Pogrebnyak «s в отношении того, как обращаться с манифестов помощью этого решения.

+0

Дело в том, что задачи ANT jar/war/ear имеют специальную обработку для манифестаций. Как ты с этим справляешься? – Yishai

+0

Вы создаете файл Manifest.MF вручную и указываете Ant на использование этого файла при выполнении jar/war/ear. –

+0

Кстати, это было тогда. Мы с тех пор мигрировали в Мейвен. –

3

Файл .ear - это .zip-файл. Чтобы развернуть взорванную версию, просто разархивируйте содержимое в папку с именем * .ear.

+0

Я это понимаю. Я пытаюсь сократить время. Я думаю, если ухо остается между сборками, это не так уж плохо, но было бы здорово избежать всей поездки добавления в zip, чтобы извлечь его. – Yishai

+0

Вы можете сгенерировать сборку в зависимой цели, а затем или , используя два других. Это заставляет логику строить дерево в одном месте и логику, чтобы закрепить или скопировать ее за пределы этого процесса. –

+0

Я предпочитаю укусить пулю при распаковке уха, чтобы гарантировать, что на производственных серверах ТОЧНО та же самая древовидная структура, которую я тестирую локально. ИМХО, ОК должно быть развернуто ТОЧНО, как производство, поэтому, если вы получаете взорванную папку, то оба они должны. Вы будете пинать себя, когда у вас возникнет ошибка (или, что еще хуже, провал) в производстве из-за проблемы с файлом file.ear и папкой.уха. –

4

Это ответ на ваш комментарий о манифесте.

Вы должны использовать задачу <manifest> (here is the link) для управления созданием манифеста.

Вот выдержка из моего файла сборки, чтобы предоставить манифест.

<copy toDir="${stage.dir}" flatten="true"> 
    <fileset dir="${resources.src.dir}"> 
    <include name="META-INF/MANIFEST.MF"/> 
    </fileset> 
</copy> 

<manifest 
    file="${stage.dir}/MANIFEST.MF" 
    mode="update" 
> 
    <attribute name="Built-By" value="${builder.name}" /> 
</manifest> 

<jar destfile="${project.jar.file}" 
    basedir="${classes.dir}" 
    manifest="${stage.dir}/MANIFEST.MF" 
    duplicate="fail" 
    whenmanifestonly="fail"  
/> 

Обратите внимание на <manifest> задача mode атрибут. Вы всегда хотите установить его на update, иначе задача <jar> всегда будет работать, так как манифест всегда будет устаревшим.

+0

Прохладный, спасибо! Очень интересно. – Yishai

Смежные вопросы