Пока я работал над примером JSF и CDI, я подумал, что было бы полезно упомянуть шаги, необходимые для создания проекта JSF и CDI Maven. Вы можете найти ниже шаги для этого.
инструменты
- Eclipse Luna по умолчанию поставляется с плагином M2E. Так что нет необходимости устанавливать плагин самостоятельно.
- WildFlye 8.x.
- Выберите в главном меню Файл-> Создать-> Другое. Затем выберите Maven-> Maven Project.
- Нажмите кнопку «Далее» и установите флажок «Создать простой проект (пропустить выбор архетипа)».
- Напишите Идентификатор группы и Идентификатор артефакта, затем выберите Упаковка как WAR.
- Нажмите кнопку Готово, чтобы создать проект со следующей структурой, отображаемой в представлении «Навигатор».
- Как видите, файл дескриптора развертывания (web.xml) отсутствует, так как нет папки WEB-INF. Также, проверив Фасеты проекта (выберите проект, затем ALT + ENTER, затем выберите в левом меню «Фасеты проекта»), мы увидим, что версия Динамического веб-модуля — 2.5, а JavaServer Faces не выбран. Итак, пришло время внести некоторые изменения в наш проект.
- Щелкните правой кнопкой мыши на имени проекта, затем выберите «Настройка»> «Добавить возможности JSF». Это настроит проект как проект JSF и добавит WEB-INF с web.xml и face-config.xml.
01020304050607080910111213141516
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
xsi:schemaLocation
=
"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version
=
"2.5"
>
<
display-name
>JSFCDIMavenProject</
display-name
>
<
servlet
>
<
servlet-name
>Faces Servlet</
servlet-name
>
<
servlet-class
>javax.faces.webapp.FacesServlet</
servlet-class
>
<
load-on-startup
>1</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>Faces Servlet</
servlet-name
>
<
url-pattern
>/faces/*</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
12345678<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
faces-config
xsi:schemaLocation
=
"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version
=
"2.2"
>
</
faces-config
>
- Добавление необходимых API в качестве зависимостей в pom.xml. Также добавим maven-compiler-plugin с версией 3.1. Я также указал maven использовать компилятор Java версии 1.7. Итак, вот последний файл pom.xml.
010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051
<
project
xmlns
=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
<
modelVersion
>4.0.0</
modelVersion
>
<
groupId
>com.ithinkisink</
groupId
>
<
artifactId
>JSFCDIMavenProject</
artifactId
>
<
version
>0.0.1-SNAPSHOT</
version
>
<
packaging
>war</
packaging
>
<
name
>JSFCDIMavenProject Maven Webapp</
name
>
<
dependencies
>
<
dependency
>
<
groupId
>javax.inject</
groupId
>
<
artifactId
>javax.inject</
artifactId
>
<
version
>1</
version
>
<
scope
>provided</
scope
>
</
dependency
>
<
dependency
>
<
groupId
>javax.faces</
groupId
>
<
artifactId
>jsf-api</
artifactId
>
<
version
>2.1</
version
>
<
scope
>provided</
scope
>
</
dependency
>
<
dependency
>
<
groupId
>javax.servlet</
groupId
>
<
artifactId
>javax.servlet-api</
artifactId
>
<
version
>3.1.0</
version
>
<
scope
>provided</
scope
>
</
dependency
>
<
dependency
>
<
groupId
>javax.enterprise</
groupId
>
<
artifactId
>cdi-api</
artifactId
>
<
version
>1.0</
version
>
<
scope
>provided</
scope
>
</
dependency
>
</
dependencies
>
<
build
>
<
finalName
>JSFCDIMavenProject</
finalName
>
<
plugins
>
<
plugin
>
<
groupId
>org.apache.maven.plugins</
groupId
>
<
artifactId
>maven-compiler-plugin</
artifactId
>
<
version
>3.1</
version
>
<
configuration
>
<
source
>1.7</
source
>
<
target
>1.7</
target
>
</
configuration
>
</
plugin
>
</
plugins
>
</
build
>
</
project
>
- Теперь щелкните правой кнопкой мыши на имени проекта, затем выберите Maven-> Обновить проект, чтобы обновить проект с добавленными конфигурациями.
- Дескриптор развертывания (web, xml) имеет версию 2.5, и мы указываем на сервлет 3.1 в нашей зависимости. Таким образом, в соответствии со схемой Java EE 7XML пространство имен изменяется на http://xmlns.jcp.org/xml/ns/javaee/. Это окончательный файл web.xml после применения этого изменения.
010203040506070809101112131415
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
web-app
xmlns
=
"http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=
"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version
=
"3.1"
>
<
display-name
>JSFCDIMavenProject</
display-name
>
<
servlet
>
<
servlet-name
>Faces Servlet</
servlet-name
>
<
servlet-class
>javax.faces.webapp.FacesServlet</
servlet-class
>
<
load-on-startup
>1</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>Faces Servlet</
servlet-name
>
<
url-pattern
>/faces/*</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
- Проверьте еще раз аспекты проекта. Вы можете изменить Dynamic Web Module для версии 3.1, а JavaServer Faces проверяется на версии 2.2 в соответствии с версией, добавленной в зависимости.
- Последняя необходимая конфигурация — это включение контекста CDI. Это можно сделать, создав XML-файл с именем beans.xml и добавив его в папку WEB-INF, как показано ниже.
1234567
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
standalone
=
"yes"
?>
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
bean-discovery-mode
=
"all"
>
</
beans
>
- Наконец добавьте проект в WildFly и запустите сервер. В представлении консоли вы увидите, что WildFly запустил службу для развертывания CDI в приложении.
Я перенес этот проект-заглушку на мой GitHub, и вы можете найти его по нижеуказанному URL.
Ссылка: | Создание проекта JSF / CDI Maven на Eclipse от нашего партнера по JCG Белала Галала, я думаю, я потону! блог. |