Java

advertisement
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
Спасибо за внимание!
Вопросы?
Download