Пока я работал над примером 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
<?xmlversion="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<?xmlversion="1.0"encoding="UTF-8"?><faces-configxsi: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
<projectxmlns="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
<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="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
<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeebean-discovery-mode="all"></beans> - Наконец добавьте проект в WildFly и запустите сервер. В представлении консоли вы увидите, что WildFly запустил службу для развертывания CDI в приложении.
Я перенес этот проект-заглушку на мой GitHub, и вы можете найти его по нижеуказанному URL.
| Ссылка: | Создание проекта JSF / CDI Maven на Eclipse от нашего партнера по JCG Белала Галала, я думаю, я потону! блог. |








