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

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

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

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

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

Усилитель низкой частоты для наушников
За последние 100 лет, значительные изменения во многих областях науки и техники обусловлены быстрым развитием электроники. На сегодняшний день невозможно на ...

Анализ эксплуатационной надежности и моделирование работы указателя тахометра ИТЭ-1Т в среде LabVIEW 8.5
Основными целями и задачами выполняемой курсовой работы являются: - систематизация, закрепление и расширение теоретических знаний по технической ...

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