ни для кого не секрет, что в современных реалиях, большинство приложений используют толпу внешних библиотек, в виде jar файлов. эти библиотеки, в свою очередь, зависят от других библиотек, а если еще и версии меняются, то начинается “кащеева проблема”: в океане остров, на нем дуб, на дубе на цепи ларец, в сундуке – заяц, в зайце – утка, в утке – яйцо, а в яйце – игла.
для эстетического решения проблемы сложных внешних зависимостей Maven предлагает красивый pom.xml файл в котором просто описывается какие библиотеки напрямую использует твой проект, а дальше, магия: Maven подтягивает jar библиотеки из Интернета по HTTP и складывает локально. при следующей компиляции, если ничего не изменилось в pom.xml файле, то используются локальные версии библиотек. ко всем прочему Maven отслеживает, какие версии библиотек зависят от каких версий других библиотек.
ко всему этому Maven позволяет по всякому разному извращенно запусать свой Java проект, например, только скомпилировать, запустить сервер какой-нибудь, только запустить тесты, сделать jar файл приложения со всеми зависимостями, возможности Maven-а безграничны!
Краткое руководство как создать свой “маневизированный” Java проект:
- Установим Maven:
sudo apt-get install maven
- Создаем вручную пустую директорию нового Java проекта, переходим в эту директорию и создаем новый Maven проект со своей структурой файлов и волшебным pom.xml файлом:
mvn archetype:generate -DgroupId=com.anorange -DartifactId=NewMavenizedProject -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
- Получилась такая структура
|-src |---main |-----java |-------com |---------anorange |-----------App.java |---test |-----java |-------com |---------anorange |-----------AppTest.java |-pom.xml
- В этой же директории создаем файлы для Eclipse:
mvn eclipse:eclipse
- Импортируем созданный проект в Eclipse: “File -> Import… -> General->Existing Projects into Workspace”
- В Eclipse пишем свой Java код и тесты в src, добавляем нужные зависимости и параметры в pom.xml файл.
- Компилируем проект в красивый запускаемый jar файл:
mvn package
- Запускаем наше приложение:
java -cp target/NewMavenizedProject-1.0-SNAPSHOT.jar com.anorange.App
Ссылки
- Отличное краткое руководство по Maven: http://www.mkyong.com/tutorials/maven-tutorials/
- Как подружить Maven и Eclipse: http://www.mkyong.com/maven/how-to-create-a-java-project-with-maven/