Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java / лекции / лекция 15.ppt
Скачиваний:
106
Добавлен:
17.04.2018
Размер:
138.75 Кб
Скачать

Лекция 15

Автоматизация сборки

Задача автоматизации

Задача автоматизации сборки заключается в автоматической сборке конечного продукта.

Утилиты:

Make

Nmake

CMake

ANT

MSBuild

И т.д.

ANT

ANT – Another Neat Tool.

Сборка задается в виде XML файла:

<project>

<target name="clean"> <delete dir="build"/>

</target>

<target name="compile">

<mkdir dir="build/classes"/>

<javac srcdir="src" destdir="build/classes"/> </target>

<target name="jar">

<mkdir dir="build/jar"/>

<jar destfile="build/jar/HelloWorld.jar" basedir="build/classes"> <manifest>

<attribute name="Main-Class" value="oata.HelloWorld"/> </manifest>

</jar>

</target>

<target name="run">

<java jar="build/jar/HelloWorld.jar" fork="true"/> </target>

</project>

Запуск процесса сборки

Для запуска процесса сборки необходимо вызвать команду ant с параметрами:

Файл сборки (по-умолчанию build.xml)

Цели сборки

ant compile ant jar Ant run

или

ant compile jar run

Свойства

Свойства предназначены для многократной ссылки на их значения

<project name="HelloWorld" basedir="." default="main">

<property name="src.dir" value="src"/> <property name="build.dir" value="build"/>

<property name="classes.dir" value="${build.dir}/classes"/> <property name="jar.dir" value="${build.dir}/jar"/> <property name="main-class" value="oata.HelloWorld"/>

<target name="clean">

<delete dir="${build.dir}"/> </target>

<target name="compile">

<mkdir dir="${classes.dir}"/>

<javac srcdir="${src.dir}" destdir="${classes.dir}"/> </target>

. . .

Зависимости

Если одна задача зависит от другой, то она будет выполнена только после успешного выполнения той, от которой она зависит

. . .

<target name="jar" depends="compile"> <mkdir dir="${jar.dir}"/>

<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="$ {classes.dir}">

<manifest>

<attribute name="Main-Class" value="${main-class}"/> </manifest>

</jar>

</target>

<target name="run" depends="jar">

<java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/> </target>

<target name="clean-build" depends="clean,jar"/> <target name="main" depends="clean,run"/>

</project>

Пример результата выполнения Ant

Buildfile: build.xml clean:

compile:

[mkdir] Created dir: C:\...\build\classes

[javac] Compiling 1 source file to C:\...\build\classes

jar:

[mkdir]

Created dir: C:\...

\build\jar

[jar]

Building jar: C:\...

\build\jar\HelloWorld.jar

run:

[java] Hello World

main:

BUILD SUCCESSFUL

Указание сторонних библиотек

<project name="HelloWorld" basedir="." default="main">

...

<property name="lib.dir" value="lib"/> <path id="classpath">

<fileset dir="${lib.dir}" includes="**/*.jar"/> </path>

...

<target name="compile">

<mkdir dir="${classes.dir}"/>

<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/> </target>

<target name="run" depends="jar">

<java fork="true" classname="${main-class}">

<classpath>

<path refid="classpath"/>

<path location="${jar.dir}/${ant.project.name}.jar"/>

</classpath>

</java>

</target>

...

</project>

Наиболее используемые задачи

Ant – вызов другой сборки

AntCall – вызов другой цели

Copy – копирование файлов/каталогов

Delete – удаление файлов/каталогов

Echo – вывод текста на экран/в файл

Exec – вызов системную команду

Jar – пакует содержимое в файл jar

Java – выполняет java класс

Javac – компилирует java классы

Javadoc – вызывает процесс документации

Mkdir –создает каталог

Property – задает свойство

Zip – запаковывает содержимое в zip файл

Property

Параметры:

name – название свойства

value – значение

location – абсолютное имя файла

file – название файла

enviroment – переменная окружения

И др…

<property name="foo.dist" value="dist"/>

<property file="${user.home}/.ant-global.properties"/>

<property environment="env"/>

<echo message="Number of Processors = $

{env.NUMBER_OF_PROCESSORS}"/>

<echo message="ANT_HOME is set to = $ {env.ANT_HOME}"/>

Ant

Параметры

Anfile – название файла (build.xml)

Dir – базовый каталог для выполнения

Target – цель для сборки

И др…

Примеры:

<ant antfile="subproject/subbuild.xml" target="compile"/>

<ant dir="subproject"/>

<ant antfile="subproject/property_based_subbuild.xml"> <property name="param1" value="version 1.x"/> <property file="config/subproject/default.properties"/>

</ant>

Соседние файлы в папке лекции