Разделы сайта

Описание механизмов автоматизации сборки приложения

При разработке ИКС службы видеонаблюдения очень важным было сократить количество конфликтов при переходе между основными стадиями разработки, такими как написание кода, интеграция, тестирование, внедрение. В процессе разработки, начиная с самого его начала, важно было гарантировать, что при запуске сборки разрабатываемого проекта каждый раз проделываются одни и те же действия. С дальнейшим усложнением процесса сборки, было также крайне необходимо определить стандарт сборки. Это требовало, как можно точнее определить, задокументировать и автоматизировать точный набор определенных шагов.

Необходимо было автоматизировать процессы компиляции исходных кодов, развертывание на удаленных серверах, создания клиентов к удаленным подсистемам. Для решения этих задач был выбран инструмент Ant 1.6 и разработан ряд ant целей. Текст ant цели по автоматическому генерированию клиента к веб-сервису приведен в листинге 3.1.

Листинг 3.1- Листинг ant цели по генерированию клиента к веб-сервису

<!-- == macrodef: build-client-from-source == -->

<macrodef name="build-client-from-source">

<attribute name="sei.package" />

<attribute name="sei.class" />

<attribute name="service.name" />

<attribute name="client.package" />

<sequential>

<wsgen sei="@{sei.package}.@{sei.class}" destdir="${build.wsgen.classes}"="${build.wsgen.resource}" keep="false" genwsdl="true">

<classpath>

<path refid="jaxws.classpath" />

<pathelement path="${build.classes.home}" />

</classpath>

</wsgen>

<wsimport debug="true" verbose="true" keep="true" extension="true" destdir="${build.wsimport.src}"="@{client.package}" Xnocompile="true" wsdl="${build.wsgen.resource}/@{service.name}.wsdl"="/META-INF/@{service.name}.wsdl" />

<replace dir="${build.wsimport.src}" includes="**/@{service.name}.java,**/@{service.name}_Service.java"=".class.getResource(&quot;.&quot;);" value=".class.getResource(&quot;&quot;);" />

<javac srcdir="${build.wsimport.src}" destdir="${build.wsimport.classes}" source="${javac.source.version}"="${javac.target.version}" debug="on" debuglevel="lines,source" encoding="UTF-8"="true" classpath="jaxws.classpath" />

<copy todir="${build.wsimport.classes}/META-INF/">

<fileset dir="${build.wsgen.resource}" includes="**/*" />

</copy>

</sequential>

</macrodef>

<target name="build-client-from-source" description="Build client from source" depends="clean,setup,compile">

<build-client-from-source client.package=" com.videoarch.mediaserver.wsclient".class="MediaServerService" sei.package="com.videoarch.mediaserver.ws" service.name="MediaServerService" />

<jar destfile="${build.wsimport.home}/${ant.project.name}-client.jar" basedir="${build.wsimport.classes}">

<manifest>

<attribute name="Built-By" value="${user.name}" />

<attribute name="Implementation-Title" value="${ant.project.name}" />

<attribute name="Implementation-Version" value="${implementation.vresion}" />

<attribute name="Implementation-Time" value="${TODAY}" />

<attribute name="Implementation-Vendor" value="" />

</manifest>

</jar>

</target>

Интересное из раздела

Ошибки позиционирования GPS-приемников в условиях полярных геомагнитных возмущений
Определение своего положения с помощью GPS навигатора, отдельного прибора, или устройства, встроенного в карманный компьютер или сотовый тел ...

Комплекс аппаратных средств для трансляции звукового сигнала на большие расстояния
Звук играет важную роль в жизнедеятельности человека. Каждый день мы слышим очень много разнообразных звуков, так же существует необходимость передават ...

Организация и расчет сетей поездной и станционной радиосвязи
Бурное развитие радиотехники создало все предпосылки для широкого использования радиосредств на железнодорожном транспорте. Массовое внедрение радиосвязи н ...