Немного о структуре проекта
Забыл рассказать о структуре проекта для maven. Дело в том,что при конвертации проекта(или при создании maven-проекта) maven поменяет структуру проекта(расположение папок).Это часто путает начинающих(да и самому было неудобно первое время,хотя оказалось-то — всё же логично)) ). Между прочим,такая структура — стандарт дефакто в проектах. К тому же maven некоторые элементы ищет в стандартных папках и изменить такой подход maven-а к делу конечно можн,да вот только зачем) Тем более если проект пишется не одним человеком,каждому придётся объяснять чего,как и где лежит,так что вот)
Собственно сама структура проекта:
обратить внимание надо на выделенные папки.
- src\main\java — служит для хранения классов приложения (*.java-файлов) используемых при запуске приложения
- src\main\resources — папка для хранения файлов,используемых приложением для работы,но не java-файлов. Тут надо размещать всяческие properties-файлы, xml-файлы и так далее
- src\main\webapp — тут располагается всё,что связано с веб-контентом. jsp-страницы, web.xml,тайлсы,картинки,css-файлы,jQuerry-скрипты и так далее.
- src\test — сдесь расположено всё,что будет использовать мавен для тестирования приложения
- src\test\java — java-классы юнит-тестирования(непосредственно сами тесты)
- src\test\recources — как и src\java\resources хранит всё что не тест) Удобно в случае если у вас например есть две базы данных,одна для непосредственно проекта,а вторая для тестирования проекта и если вдруг при тестах база отвалится,то это будет не рабочая база,и клиенты работающие в момент тестирования не потеряют данные (как-то так.мутное объяснение,но я думаю с большего понятное)
конвертация проекта для maven
Иногда бывает,вот есть у тебя проект,но надо к нему прикрутить maven.И вот казалось бы с такой отличной системой всё должно работать на ура,но не тут-то было.Требуется совершать магические действия и танцы с бубном часами на пролёт,пока не поймешь,что же тут не так,хотя потом всё оказывается достаточно логично и просто) Ну-с,приступим.
За основу я возьму веб-проект написанный вот в этой статье и удалю из него все используемые библиотеки (папка WebContent/WEB-INF/lib)чтобы показать пользу от maven.Он и прост и не требует глубоких познаний. Для того чтобы преобразовать проект в maven-проект,надо всего лишь подключить dependency managment tool. Для этого кликаем по проекту правой кнопкой и далее Maven->Enable dependency managment. maven немного подумает,добавит pom-файл в корень проекта и собственно преобразование можно было бы считать оконченным,если не несколько НО.
во-первых,у нас все ещё нет предварительно удалённых библиотек.Добавим их.
Для этого:
- кликаем по проекту правой кнопкой далее maven->add Dependency.
- В появившемся окне окне в поле ввода пишем struts2-core. maven выдаст список подходящих библиотек(в нашем случае должна остаться одна)
- каждое поле раскрывается в список с доступными версиями библиотек.Если в своём проекте вы использовали не самую последнюю версию и боитесь,что с новой не будет работать,можно сразу выбрать нужную вам версию,либо взять последнюю и потом при необходимости просто поменять версию
- далее правой кнопкой по проекту Run As->install
и так для каждой библиотеки.Одна из основных особенностей maven в том,что скорее всего библиотека скачается не одна,а в месте с зависимыми библиотеками. В редакторе pom в закладке Dependency Hierarhy вы можете посмотреть все подгруженные библиотеки и список зависимостей между ними. Наш проект зависит только от одной библиотеки struts2-core которая в свою очередь зависит ещё от нескольких.
далее нам надо зайти в свойства проекта и немного подправить Build Path. П проекту правой кнопкой и в списке выбираем Properties. В появившемся окне в колонке слева выбираем Java Build Path.
- в первой закладке Source нам надо добавить source folder. Кликаем по кнопке «Add Folder…» и в появившемся списке выбираем папки,в которых у нас лежат классы(в нашем случае это папка src)
- в третьей закладке нам надо поменять используемую версию jre. Выбираем пункт JRE System Library[J2SE-1.5], в списке слева кликаем по кнопке Edit и в появившемся окне в списке Execution environment выбираем JavaSE-1.6(jre6)
- но и на этом ещё не всё. Ява будет видеть библиотеки и эклипс будет корректно подсвечивать используемые библиотеки и пакеты,но при запуске на сервере будут проблемы,так как используемые библиотеки не будут импортироваться в war-файл перед развёртыванием на сервере. Для этого нам надо отметить какие библиотеки подключать при импортировании. В четвёртой вкладке Order and Export нам достаточно пометить Maven Dependencies и JRE System Library.
- Если и теперь не работает,то скорее всего надо указать какой именно репозиторий использовать для загрузки библиотек. В закладке Markers(находится там же де и закладка Console) развернём список Classpath Dependency Validator Message и выделив элемент нажмём Ctrl+1 (Quick Fix). Нажмём Finish
Теперь всё должно работать.Если не работает,проверяем dependencies проекта и их версии. На этом всё)
создание вебпроекта с использованием maven
Ниже вас ждёт небольшой,кстати и не совсем полезный,(и не совсем бесполезный) урок по созданию maven-вебпроекта. Мавен мы естесственно ставили не просто так,и теперь немного попользуемся им.
Создаём новый проект(File->New Project). В поле ввода введём maven и выберем Maven project и нажмём next. Проверим галочку в поле Use default Workspace location и снова нажмём Next.
В поле Filter введём maven-archetype-webapp и снова нажмем next
в следующем окне нам надо ввести GroupId(название пакетов) и ArtifactId(название проекта) и кликнуть Finish.
создастся веб-проект,но проверить его работоспособность пока что не получится,так как надо подружить эклипс и мавен ещё немного сильнее.
кликаем по проекту правой кнопкой,выбираем появившийся пункт Maven->Add Plugin. В появившемся окне в поле для ввода вводим maven-eclipse-plugin и выбираем появившийся плагин. Плагин скачается и будет в локальном реппозитории,то есть если в следующий раз понадобится,то он не будет скачан из интернета.
maven создаёт в корне проекта дескриптор зависимостей приложения(файлик описывающий чего надо для того,чтобы проект запускался) pom.xml. Он может работать в режиме визуального редактирования и в режиме текстового редактирования как и любой xml.Откроем это файл и перейдём в режим текста.
теперь внутри тега <plugin> есть тег <configuration> и нам надо внутрь него дописать следующее:
Установка maven-плагина в eclipse
Эта статья является частичным продолжением предыдущей статьи по установке maven под windows и в ней я расскажу как установить maven в IDE eclipse.
Для установки каких либо плагинов в eclipse есть свой менеджер — eclipse marketplace. Идём в Help->Eclipse Marketplace далее из предложенных репозиториев выбираем репозиторий эклипса и кликаем next. При первом запуске IDE загрузит информацию о имеющихся плагинах,в дальнейшем будет только проверять обновления.
В строке поиска введём maven.После довольно продолжительного поиска выберем для установки Maven Integration for Eclipse и кликнем install.
Будет произведён поиск зависимостей плагина от других плагинов(опять же достаточно долго всё это у эклипса) и отображён их список. Кликаем Next.
Ява попросит подтвердить пользовательское соглашение нечитаем основательно изучаем сие,соглашаемся и снова кликаем Next. эклипс установит плагин и попросит перезагрузиться,что мы и сделаем.
Вот.Теперь плагин установлен,но эклипс поставила нам последнюю верисю 3.0.3. Мы же будем использовать 2.2.1 и нам надо объяснить свои намерения. Для этого идём в Windows->Preferences. В появившемся окне слева выбираем Maven и в раскрывающемся списке выбираем Installations.
Сейчас у нас там выбран embedded 3.0.3 который мы установили через маркет.Нажимаем Add и выбираем путь к дирректории с установленным maven. ставим галочку напротив нового-старого maven-a 2.2.1 который появился.
Теперь поскольку eclipse использует jre а maven-у надо jdk надо показать где оно лежит.Если быть более точным,то jre — это просто виртуальная машина,а jdk — это виртуальная машина и инструменты разработчика.jdk так же включает в себя виртуальную машину,ну да не будем глубоко углубляться.
Для того,чтобы эклипс использовал jdk надо подредактировать файл eclipse.ini лежащий в корне папки с эклипсом.Ниже — мой eclipse.ini. жирным шрифтом выделено то,что необходимо вставить
Установка maven под windows
Любой java-разработчик в процессе разработки часто встречается с проблемой подключения сторонних библиотек не существующих в стандартной сборке jdk.К тому же помимо этого часто возникает проблема совместимости версий,плагинов и так далее. Для упрощения жизни разработчикам была создана система автоматизации сборки проектов maven. Это своеобразный «упрощайзер» жизни при установке библиотек для проекта.
В этой статье я расскажу как установить maven для windows.использовать буду maven 2.2.1. С версиями выше\ниже не должно быть проблем либо сильных различий. Итак приступим.
Для начала нам надо скачать maven c официального сайта проекта и разархивировать архив в папку желательно не содержащую русские буквы.
В windows есть свои переменные для обозначения путей к особо важным библиотекам и\или программам. При вызове какой либо программы из другой программы,чтобы было понятнее часто используются эти самые переменные
в этой статье мы будем пользоваться фактически исключительно ими.Точнее мы будем их редактировать и создавать новые.
Кликаем по иконке «мой компьютер» правой кнопкой и выбираем пункт «свойства». Далее если у вас ОС win7 то в появившемся окне надо выбрать пункт «дополнительные параметры системы». Далее действия не зависят от ОС. Выбираем закладку «дополнительно» и там есть заветная кнопка «переменные среды». Появится окно:
Далее нам нужно создать системную переменную JAVA_HOME указывающую на путь к JDK (НЕ к JRE, а к JDK). Если нет jdk качаем и устанавливаем. Должно получиться что-то похожее на:
Таким же образом создаём переменную MAVEN_HOME указывающую на папку с maven-ом. Теперь надо подредактировать переменную Path. откроем её и в поле «значение переменной» поставим ; после последней записи и допишем следующее %MAVEN_HOME%/bin;
Здесь мы использовали раннее созданную переменную MAVEN_HOME.
Для проверки работоспособности надо запустить консоль и набрать mvn -version Должно получиться примерно следующее:
C:\>mvn -version Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800) Java version: 1.6.0_13 Java home: C:\Program Files\Java\jdk1.6.0_13\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows 7" version: "5.1" arch: "x64" Family: "windows" Теперь maven установлен :)