Java Java console compile, Ant, Maven Эрдынеев Майдар Компиляция: простой файл Исходный файл Команда: Результат: Компиляция: простой файл Запуск: Создание jar: Manifest.txt: Main-class: HelloWorld\n Результат: Компиляция: отделяем исходники Команда: Создаем папку bin для .class файлов и src для исходников Запуск Компиляция: используем пакеты Создадим такую структуру каталогов: HelloWorld\src\ru\ncedu\helloworld И пропишем в начале файла имя пакета: package ru.ncedu.helloworld; Команда: Результат: Компиляция: несколько файлов Пусть у нас есть 3 файла: Calculator.java, Main.java, Adder.java Попробуем скомпилировать: Компиляция: несколько файлов Решение: Сборка и запуск: Maven: введение • Maven – инструмент для сборки java проектов • Ключевые понятия: Структура проекта в pom.xml (Project object model) -артефакт (artefact) -группа, название, ID -зависимость (dependency) -плагин (plugin) -архетип (Archetype) Maven: установка Windows: - скачивание с оф. Сайта http://maven.apache.org/download.cgi - создаем переменную среды M2_HOME со значением пути к maven - создаём переменную M2 со значением %M2_HOME%\bin - в Path добавляем %M2% - в консоли пишем mvn –version Maven: установка • linux: • Sudo apt-get update • Sudo apt-get install maven Maven: жизненный цикл • Жизненный цикл: -validate (корректность метаинформации в проекте) -compile (компилирование исходников) -test (юнит тесты) -package (упаковка jar или war ) -integration-test (интеграционные тесты) -verify (корректность пакета и удовлетворение требованиям качества) -install (установка в локальный репозиторий) -deploy (деплой, отправка на production сервер) Maven: создание приложения Создание приложения на основе архетипа: mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp Maven: сборка mvn package (положит проект в папку target) или mvn install (положит проект в локальный репозиторий) Maven: зависимости <dependencies> … <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.35.0</version> </dependency> </dependencies> Большинство библиотек находятся в центральном репозитории, если их нет, то нужно прописать либо в pom.xml или в settings.xml локального репозитория. Maven: репозитории <repositories> <repository> <releases> <enabled>true</enabled> </releases> … <id>repository.jboss.com</id> <name>Jboss Repository for Maven</name> <url> http://repository.jboss.com/maven2/ </url> </repository> </repositories> Maven: репозитории или мы можем скачать файл с оф. Сайта и установить его: mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true Затем добавить прописать его в dependency Maven: плагины Плагины описываются в аналогично в блоке build: dependency – plugin repository – pluginRepository и т.п. Пример: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <configuration> <wtpversion>2.0</wtpversion> </configuration> </plugin> В консоли пишем: mvn eclipse: eclipse и можем открывать проект в эклипсе Ant : введение Ant – также как и maven предназначен для сборки проектов - Императивная сборка - Управление процессом сборки посредством xml файла (build файл) - Build файл содержит определение проекта, состоящего из отдельных целей (targets) - Цели содержат вызовы команд заданий (tasks) - Цели могут быть зависимыми друг от друга Ant: команды Javac — компиляция Java-кода Copy — копирование файлов Delete — удаление файлов и директорий Move — перемещение файлов и директорий Replace — замещение фрагментов текста в файлах JUnit — автоматический запуск юнит-тестов Exec — выполнение внешней команды Zip — создание архива в формате Zip Mkdir – создание директории ….. И т.д. Всего команд больше 150. Ant : простейший файл <project name="AntExample" default="all" basedir=“."> <description>This is a project which uses dependancies</description> <target name="make_dirs_target" description="Make a dir"> <mkdir dir="dir_name"/> </target> <target name="all" description="Do the build" depends="make_dirs_target"> <echo>I'm building my software</echo> </target> </project> Ant: компиляция, создание jar <project name="AntExample" default="all" > <target name="make_dirs" description="Make some dirs"> <mkdir dir="build"/> <mkdir dir="build/classes"/> </target> <target name="compile" description="compile java" depends="make_dirs"> <javac destdir="build/classes"> <src path="src"/> </javac> </target> <target name="make_jar" description="make jar file" depends="compile"> <jar destfile="build/my-project.jar"> <fileset dir="build/classes"> <include name="**/*.class"/> </fileset> </jar> </target> <target name="all" description="Do the build" depends="make_jar"/> </project> Ant: переменные <project name="AntExample" default="all" > <property name="src.dir" value="src"/> <property name="build.dir" value="build"/> <property name="classes.dir" value="build/classes"/> <target name="make_dirs" description="Make some dirs"> <mkdir dir="${build.dir}"/> <mkdir dir="${classes.dir}"/> </target> ... <target name="make_jar" description="make jar file" depends="compile"> <jar destfile="${build.dir}/my-project.jar"> <fileset dir="${classes.dir}"> <include name="**/*.class"/> </fileset> </jar> </target> … </project> Ant: внешние зависимости <project name="AntExample.jar" default="all" > <junit printsummary="yes" fork="yes" > <classpath refid="junit.class.path" /> <classpath> <pathelement location="${build.dir}"/> </classpath> <test name="ru.ncedu.time.TestTime" /> <batchtest todir="${test.report.dir}"> <fileset dir="${test.dir}"> <include name="**/*Test*.java" /> </fileset> </batchtest> </junit> </project> Ссылки http://habrahabr.ru/post/125210/ - сборка в командной строке http://habrahabr.ru/post/77382/ - maven tutorial http://maven.apache.org/index.html официальный сайт maven http://ant.apache.org/manual/tutorialHelloWorldWithAnt.html#enhance –ant tutorial Спасибо за внимание! Вопросы?