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

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

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

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

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

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

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

Беспроводные локальные сети Wlan (wi-fi)
Так сложилось, что в нашей стране большую распространенность получили районные Ethernet сети, затягивающие в квартиру витую пару. Когда дома всего один ком ...