当我在研究JSF和CDI示例时,我认为提及创建JSF和CDI Maven项目所需的步骤会很有用。 您可以找到以下步骤。
工具类
- 默认情况下,M2E插件随附的Eclipse Luna。 因此,无需自己安装插件。
- WildFlye8.x。
- 从主菜单中选择文件->新建->其他。 然后选择Maven-> Maven项目。
- 单击下一步按钮,然后选中“创建简单项目(跳过原型选择)”。
- 写下组ID和工件ID,然后选择包装作为WAR。
- 单击“完成”按钮创建项目,并在“导航器”视图中显示波纹管结构。
- 如您所见,由于没有WEB-INF文件夹,因此没有部署描述符文件(web.xml)。 同样,通过检查Project Facets(选择项目,然后选择ALT + ENTER,然后从左侧菜单中选择Project Facets),我们可以看到Dynamic Web Module的版本为2.5,并且未选择JavaServer Faces。 现在是时候为我们的项目做一些配置了。
- 右键单击项目名称,然后单击配置->添加JSF功能。 这会将项目配置为JSF项目,并添加带有web.xml和faces-config.xml的WEB-INF。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"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>
<?xml version="1.0" encoding="UTF-8"?> <faces-configxmlns="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-facesconfig_2_2.xsd"version="2.2"></faces-config>
- 将必要的API作为依赖项添加到pom.xml。 另外,添加带有3.1版的maven-compiler-plugin。 我还指出了maven使用Java编译器1.7版。 所以这是最终的pom.xml。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><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,我们在依赖项中指向servlet 3.1。 因此,根据Java EE 7XML模式,名称空间更改为http://xmlns.jcp.org/xml/ns/javaee/。 这是应用更改后的最终web.xml。
<?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>
- 再次检查Project Facets。 您可以更改版本3.1的动态Web模块,并根据依赖项中添加的版本对JavaServer Faces进行2.2版检查。
- 所需的最后一个配置是启用CDI上下文。 这可以通过创建一个名为beans.xml的XML文件并将其作为以下文件添加到WEB-INF文件夹中来完成。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <beans 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/beans_1_1.xsd"bean-discovery-mode="all"> </beans>
- 最后,将项目添加到WildFly,然后启动服务器。 您将在控制台视图中看到WildFly启动了将CDI部署到应用程序的服务。
我已将此存根项目推送到我的GitHub,您可以通过以下URL找到它。
- https://github.com/belalgalal/Blogging/tree/master/JSFCDIMavenProject
翻译自: https://www.javacodegeeks.com/2016/02/creating-jsfcdi-maven-project-eclipse.html