2015-02-20 3 views
1

Я новичок в Maven, и я не нашел правильного ответа на следующую проблему.Где разместить сторонние библиотеки при использовании Maven с Tomcat?

Например, у меня есть библиотеки, которые зависят от моего проекта: log4j, j, servlet api, junit, struts и т. Д. Когда я использую только Tomcat, я могу положить эти банки в папку %CATALINA_HOME%\lib и использовать их.

Но как приходит Maven Я могу настроить pom.xml для всех зависимостей и их областей.

Если я это сделаю - могу ли я удалить libs из папки %CATALINA_HOME%\lib? Если смогу, то как Tomcat знает, где найти эту стороннюю банку?

И хорошо ли это, если у вас есть tomcat-native libs (tomcat-util, tomcat-juli, jasper и т. Д.) В папке %CATALINA_HOME%\lib и укажите другие библиотеки в pom.xml?

ответ

1

И Это хорошая практика, просто чтобы иметь TOMCAT родной LIBS (кот-UTIL, кот-Juli, яшма и т.д.) в% CATALINA_HOME% \ Lib папки и указать другую LIBS в pom.xml?

Да, это действительно очень хорошая практика. Таким образом, ваша установка Tomcat остается неизменной, и вы можете использовать ее для развертывания другого webapp (у которого может быть другой набор зависимостей или такая же зависимость в другой версии).

Maven автоматически разместит зависимости внутри WEB-INF/lib вашего окончательного файла войны, а Tomcat (и каждый другой сервер) будет искать в этом каталоге для librairies.

Кстати, я заметил, что вы упомянули сервлет-апи в своем посте. Эта конкретная зависимость предоставляется Tomcat, а это означает, что вам не нужно включать ее в свою последнюю войну. С Maven это означает, что вам нужно добавить <scope>provided</scope> в эту зависимость.

+0

Я принимаю ваш ответ, поскольку он имеет более подробное объяснение.спасибо – marknorkin

+0

также вы бы пояснили: в этом случае мне нужно указать servlet-api в pom.xml? Если я этого не сделаю, в каких случаях это необходимо? – marknorkin

+0

Да, вам нужно указать его в pom.xml, но с предоставленной областью. Это специальная область, которая говорит Maven: «Мне нужна эта зависимость для компиляции, но не упаковывайте ее в мою войну, потому что она будет предоставляться сервером, развертывающим мое приложение». Если он включен в вашу войну, у вас будет предупреждение при запуске Tomcat, в котором говорится, что эта банка не должна быть в ваших лихрирах. – Tunaki

1

Если я это делаю - я могу удалить из LIBS% CATALINA_HOME% \ Lib папки?

Да.

Если я могу тогда как Tomcat знает, где найти этот 3-й партии банки?

загрузчик классов знает, что он должен выглядеть в вашем war/WEB-INF/lib Directory.

И Это хорошая практика, просто чтобы иметь TOMCAT родной (LIBS-UTIL кот, кот-Juli, яшма и т.д.) в% CATALINA_HOME% \ Lib папки и указать другие LIBS в pom.xml?

Да, это так.

+0

спасибо! Я отвечу на ваш ответ – marknorkin

Смежные вопросы