2014-12-01 2 views
2

Я не знаю, если это глупый вопрос, но я новичок в Maven, я не знаю, как бороться с этим:Реферирования с Js Maven зависимости от JSP

Я в настоящее время работаю в проекте webapp (struts2), используя структуру проекта Maven, и я только что добавил новую зависимость, с которой хочу работать: jqgrid-4.6.0 (JQuery grid-view plugin).

Я добавил зависимость от моего pom.xml просто отлично, и теперь проблемы возникают, когда я должен включить файлы js внутри этой зависимости в JSP. Если бы я сделал это старый способом (без использования Maven зависимостей) я бы поставил все js файлов пришедших в банке в каталог Project_root/src/main/webapp/js в моем проекте, и ссылаться на них, как это:

<script src="../js/some_file_name.js" type="text/javascript"></script> 

Но я не уверен, как справиться с этим, используя зависимость вместо того, чтобы помещать извлеченный .jar в каталог js.

Надеюсь, вы понимаете, что я пытаюсь сделать.

ответ

6

Возможно, вы захотите использовать webjars (возможно, вы уже это сделали). Он позволяет добавлять любые типы Javascript-библиотек в зависимости от вашего проекта Maven.

В вашем случае вы можете просто добавить следующую зависимость в файл pom.xml Maven:

<dependency> 
    <groupId>org.webjars</groupId> 
    <artifactId>jqgrid</artifactId> 
    <version>4.6.0</version> 
</dependency> 

Теперь я не знаю, как это будет работать в приложении распорки 2, но в нормальном сервлета 3 совместимый сервер вы можете ссылаться на файл с помощью:

<script src="webjars/jqgrid/4.6.0/jquery.jqGrid.js" type="text/javascript"/> 

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

URL-адрес должен быть затем что-то вроде:

<script src="${pageContext.request.contextPath}/webjars/jqgrid/4.6.0/jquery.jqGrid.js" type="text/javascript"/> 

Смотрите webjars documentation для получения дополнительной информации.

+0

Спасибо за ваш ответ. Кажется, это то, что я искал, хотя сейчас у меня нет знаний, чтобы понять, почему это работает, поскольку я довольно новичок в Maven'. Так что не нужно вручную вводить все 'js' файлы внутри моего каталога webapp, как «нормальный» плагин установки? В том числе, что зависимость от моего 'pom.xml' будет делать всю работу? – JorgeGRC

+0

В настоящее время я тестирую другой плагин jquery, 'struts2-jquery-plugin' из группы' com.jgeppert.struts2.jquery' и, похоже, работает без ссылки на него внутри JSP, просто добавил зависимости к моему 'pom ,xml', и это, откровенно говоря, более удобно, чем наличие всех файлов плагинов и файлов внутри папки '/ lib'. – JorgeGRC

+0

Да, в общем, вам не нужно будет помещать какие-либо ручные файлы JS в свой веб-каталог при использовании webjars. Я не уверен, что вы имеете в виду с «нормальным» подключением плагина? Какую структуру вы использовали в прошлом, поэтому я могу объяснить ее в ваших условиях. Я думаю, что также struts2-jquery-plugin использует собственный JSP-тег, чтобы поместить ту же строку в полученный html-файл. – Jeroen

-1

Почему вы хотите использовать их как зависимость? Является ли файл js не частью вашего проекта?

Обычно пакеты non-java (eq non jar/war/ear etc) добавляются как часть проекта. Я видел некоторые пакеты фреймворков, таких как jQuery для maven, но это не типично. Вы можете построить свою собственную войну для jQuery, но это будет фиктивная отдельная война с собственной жизнью, независимой от вашей, с точки зрения развертывания.

+0

Я новичок в веб-разработке и новичок в Maven, поэтому у меня мало опыта в создании webapps ... Я думал, что было бы хорошей практикой включать все внешние «вещи», которые мне нужны (включая jquery и javascript-плагины) в качестве зависимостей Maven, но я мог бы неправильно понять ... – JorgeGRC

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