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

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

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

Необходимо было автоматизировать процессы компиляции исходных кодов, развертывание на удаленных серверах, создания клиентов к удаленным подсистемам. Для решения этих задач был выбран инструмент 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>

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

Проводные линии электросвязи
Проводные линии электросвязи делятся на кабельные, воздушные и оптоволоконные. Линии электросвязи возникли одновременно с появлением электрического теле ...

Проектирование двухполупериодного выпрямителя и Г-образного индуктивно-емкостного фильтра
Электроника это наука, которая охватывает не только технику слабых токов, но технику сильных токов, обычно относящихся к электротехнике, поскольку она опер ...

Расчет характеристик сигналов и каналов связи
В последнее десятилетие ХХ века произошла научно-техническая революция в области транспортной связи, в основе которой лежат два крупных достижения ...