当我在研究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-config 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-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://www.javacodegeeks.com/2016/02/creating-jsfcdi-maven-project-eclipse.html