Ответ 1
Да, вы можете. Предполагая, что Eclipse (ваша история вопроса подтверждает, что вы его используете), просто создайте "Проект веб-фрагментов":
И связать его с основным проектом в мастере:
Вы можете при необходимости (повторно) настроить его в свойстве "Объединение развертывания" основного веб-проекта (или любом другом способе конфигурирования сборки таким образом, чтобы она в конечном итоге заканчивалась как JAR в /WEB-INF/lib
основного веб-проекта).
В основном это проект Java со следующей структурой папок:
CommonWebProject
|-- com.example... (you can put e.g. @WebServlet classes here)
|
|-- META-INF
| |-- resources (you can put shared web resources here)
| | |-- common.css
| | |-- common.js
| | |-- template.jsp
| | :
| |
| |-- beans.xml
| |-- web-fragment.xml
| `-- MANIFEST.MF
:
Любое содержимое в папке /META-INF/resources
разрешено так же, как webcontent WAR (мой Eclipse Luna SR1 не создавал папку /resources
, поэтому вам нужно вручную ее создать). И, что важно, любые ресурсы (включая классы!) С таким же именем уже в WAR будут иметь приоритет загрузки по сравнению с JAR, поэтому вы могли бы при необходимости "переопределить" общий ресурс JAR из WAR таким образом.
Обратите внимание, что файл web-fragment.xml
должен быть назван точно таким же образом и, следовательно, не web.xml
. IDE должна просто автогенерировать одну для вас, но для полноты совместимость с Servlet 3.0 выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<web-fragment
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"
version="3.0"
>
<!-- Put shared web.xml config here. -->
</web-fragment>
См. также:
- Структура для нескольких проектов JSF с общим кодом (если вы используете JSF)