Яндекс.Метрика

    Ни о чём

    Maven: ответы на вопросы


    Мне задали вопрос, ответом на который я хочу поделится не только с вопрошавшим, но и с остальной аудиторией хабра. На случай если, что то, да и окажется из этого полезным. Кроме этого я готов ответить и на другие вопросы хабровчан, которые прямо или косвенно касаются Maven.
    Предполагаю сделать эту статью не совсем обычной и обновлять по мере появления новых вопросов с ответами.

    Вопрос звучал примерно так:Как создать spring mvc проект, и подключить требуемые библиотеки например hibernate, задеплоить его на tomcat, а потом работать с этим проектом в eclipse?
    Что бы не отвечать сумбурно и на все сразу давайте разделим вопрос.
    1. Создание Maven проекта
    2. Подключение библиотек (зависимостей) в Maven
    3. Деплой(установка) проекта на сервер приложений.
    4. Взаимодействие Maven со средой разработки.

    Небольшое введение.


    Практически все Maven делает при помощи плагинов, которые сам скачивает и обновляет из известных ему репозиториев. Таким образом, если в будущем вы хотите заставить Maven что то делать с проектом, вам необходимо найти(или написать) плагин, который это будет делать. Некоторые плагины могут быть запущены только при выполнении фазы обработки проекта, а некоторые плагины вообще не требуют наличия проекта.

    1. Создание проекта.

    Maven создает проекты при помощи Maven Archetype Plugin.Создать проект можно либо полностью нулевой, при помощи команды:
    mvn archetype:create -DgroupId=com.oracle.java -DartifactId=MyProject
    
    groupId — это идентификатор группы проектов (как правило название компании + продукт) например com.oracle.javafx
    artifactId — непосредственный идентификатор проекта в группе
    (Вообще, все проекты в Maven однозначно идентифицируются по трем составляющим Группа, идентификатор, версия.)

    Либо можно создать проект указав архитип(шаблон/болванка) по которому он должен быть создан:
    mvn archetype:generate -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DarchetypeVersion=2.0 -DgroupId=com.mysite.sample -DartifactId=mySpringMVCProject -DinteractiveMode=false
    
    В этой команде плагину передается набор параметров определяющих как и по какому архитипу создать проект. Каждый параметр начинается с "-D" и заканчивается пробелом. (-D<имяПараметра>=<ЗначениеПараметра>)

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

    2. Подключение библиотек (зависимостей) в Maven

    Для подключения библиотеки к проекту на Maven необходимо что бы библиотека так же была проектом на Maven и лежала в репозитории про который «знает» Ваш Maven. Если у вас в наличии есть только jar файл, который хочется использовать как библиотеку, то и это вопрос решаемый.
    • Репозиторий и его настройки (должны быть у вас в MavenDir/conf/settings.xml).
    • groupId зависимости
    • artifactId зависимости
    • version (необходимая версия) зависимости
    • type (тип) зависимости

    3. Деплой(установка) проекта на сервер приложений.

    Деплоем в tomcat занимается tomcat-maven-plugin (Ваш КЭП).Для того что бы в фазе deploy проект обновлялся на tomcat необходимо найти в xml проекта ветку настроек project.build.plugins и добавить туда следующий код кусок xml.
    <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <configuration>
                    <!--здесь должны быть указаны настройки деплоя в tomcat -->
                    <!-- Например:-->
                    <warDirectory>path/to/my/warDir</warDirectory>
            </configuration>
    </plugin>
    
    Почитать о возможных настройках плагина и посмотреть примеры можно здесь.

    4. Взаимодействие Maven со средой разработки.
    Maven уже достаточно известен и многие среды разработки умеют просто открывать его проекты (например NetBeans). Но eclipse все равно требуется проект в своем формате. Получить эклипсовский можно так же при помощи плагина:
    mvn eclipse:eclipse
    
    P.S.
    Топик не претендует на полноту изложения материала, является своеобразным экспериментом и специально помещен в «Персональные блоги», поэтому, если у вас все таки появилось острое желание поставить минус (не важно куда), потратьте пожалуйста пару минут на обоснование.
    Спасибо.