• 第1部分 ,
  • 第2部分 ,
  • 第3部分 ,
  • 第4部分 ,
  • 第5部分 ,
  • 第6部分 ,
  • 第7部分
  • 第8部分

自上一篇文章以来,这一系列教程已经有很长时间了。 是时候恢复并在我们的简单项目中添加新功能了。 正如我在之前的帖子中提到的那样,本系列文章主要针对Maven和JavaEE7新手,我欢迎对以下内容有任何疑问或意见(和修正)。 我保证我会努力跟上更新。

这个帖子的Git标签?

该帖子的标签是post8 ,可以在我的bitbucket存储库中找到。

与以前的帖子相比有什么变化?

  • 读者的代码注释和修正已被集成。非常感谢您的来访。
  • 我已经将Wildfly应用服务器的版本从8.1更新到8.2,因此所有示例和代码都在新服务器下运行。
  • 我还将Arquillian BOM的版本更新为最新版本,即现在的1.1.7。
  • 我还在样本父项目下添加了一个属性,该属性指示各种maven模块将自动下载和使用Wildfly服务器的路径,这样您就不必自己下载它。 一旦您尝试执行先前文章中的单元测试之一,服务器将自动下载并提取到预定义的路径(sample-services模块)
    <!--path to download wildfly--><wildfly-server-home>${project.basedir}/servers/</wildfly-server-home>

在我们的耳朵上添加启用了JSF的war Maven模块

最终,我们的项目结构已经出现了战争(请参见示例网站)

Maven模块。 因此,没有引入任何额外的模块,而是对父级和模块本身的现有pom.xml文件进行了更改。

步骤1在web.xml上更改

我们的应用程序服务器已经捆绑了必需的库和设置,以支持使用JSF 2.2规范的应用程序。 Wildfly捆绑了Mojarra 2.2.8 。 我们要做的只是更新一些配置描述符(最终只有一个)。 最重要的是web.xml,现在看起来像这样。

<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"><context-param><param-name>javax.faces.PROJECT_STAGE</param-name><param-value>Development</param-value></context-param><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><session-config><session-timeout>15</session-timeout></session-config><welcome-file-list><welcome-file>faces/index.xhtml</welcome-file></welcome-file-list>
</web-app>

第2步:打包战争和瘦身的战争问题

我们的战争模块遵循一种称为“瘦身战争”的包装方案。 请从Apache maven war插件阅读以下页面 。 长话短说,为了减小部署能力(耳朵)的整体大小,我们将所有必需的库打包在耳朵级别的预定义文件夹下,通常称为\ lib,并且不包括在下面的库战争的WEB-INF \ lib文件夹。 您唯一需要做的就是将战争的相关性添加到耳边。 尽管事实上整个“ hack”感觉都不是专家,但如果遵循建议的配置,它就可以工作,但是在某些情况下,瘦小的战争包装将无法工作。 其中之一通常用于基于JSF的JavaEE Web应用程序,在该应用程序中,应将JSF小部件引擎的实现打包在战争的WEB-INF \ lib中。

对于我们的示例项目,我正在使用优秀且免费的Primefaces库 ,我强烈建议您将其用于下一个基于JSF的项目。 因此,我需要为primefaces jar定义对war模块的依赖关系,但要通过仅针对此jar的瘦war机制,以便将其打包在正确的位置。 这是我们的做法。

<!-- from the war module pom.xml --><!-- This is the dependency --> <dependency><groupId>org.primefaces</groupId><artifactId>primefaces</artifactId><version>${primefaces-version}</version></dependency><!-- See the packaging exclude, we exclude all the jars apart from the one we want
to be bundled within the WAR --> <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><configuration><packagingExcludes>%regex[WEB-INF/lib/(?!primefaces).*.jar]</packagingExcludes><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest><manifestEntries><Class-Path>sample-services-${project.version}.jar</Class-Path></manifestEntries></archive></configuration></plugin>

步骤3添加一些jsf爱,一个托管bean和带有适当标签的xhtml页面。

我们的代码只是一张小桌子,还有几个Primefaces的标签。 如果您认为需要阅读有关JSF 2.X的更多信息,请访问以下链接

  • JSF神灵之一(BalusC)的JSF 2.2教程
  • Primefaces文档
  • Primefaces展示柜
  • JavaEE教程– Oracle的JSF 2.2
  • JSF 2.2示例

步骤4打包并部署到正在运行的服务器。

启动您的wildfly(预计您的项目库目录和子文件夹服务器下应有一个)

<wildfly-server-home>${project.basedir}/servers/</wildfly-server-home>

然后在样本父项目类型下。

mvn clean install -Ph2

您应该在http:// localhost:8080 / sample-web /上具有启用了JSF 2.2的演示应用程序,并看到类似以下内容的内容。

就是这样,这将为您提供一个简单的起点,以便扩展除演示之外的其他功能!

与往常一样,您将在标记post8下找到完整的示例。

翻译自: https://www.javacodegeeks.com/2015/03/java-ee7-and-maven-project-for-newbies-part-8.html

针对新手的Java EE7和Maven项目–第8部分相关推荐

  1. java ee maven_针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom...

    java ee maven 为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务 ...

  2. 针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom

    为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务器上的部署并细化我的配置. ...

  3. java ee maven_针对新手的Java EE7和Maven项目–第8部分

    java ee maven 第一部分 , 第2部分 , 第3部分 , 第4部分 , 第5部分 , 第6部分 , 第7部分 第8部分 自上一篇文章以来,这一系列教程已经有很长时间了. 是时候恢复并在我们 ...

  4. java ee maven_针对新手的Java EE7和Maven项目–第6部分

    java ee maven 从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5部分 在上一篇文章(第5部分)中,我们发现了如何使用Arquillian(我们的EJB ...

  5. java ee maven_针对新手的Java EE7和Maven项目–第7部分

    java ee maven 从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5 部分 , 第6部分 在上一篇文章(第6章)中,我们发现了如何使用Arquillian ...

  6. 针对新手的Java EE7和Maven项目-第2部分-为我们的应用程序定义一场简单的战争

    从第一部分恢复 第1部分 我们刚刚定义了父 pom. 一种特殊的pom类型,它最终定义了我们的应用程序将要使用的库. 它还配置了所有用于包装我们应用程序每个模块的Maven工具. 您可以在此处 签出 ...

  7. ejb的maven_针对新手的Java EE7和Maven项目-第3部分-定义ejb服务和jpa实体模块

    ejb的maven 从前面的部分恢复 第1部分 第2部分 我们在第三部分继续介绍,我们已经有一个父pom,并且已经为我们的war模块定义了pom. 在我们的原始设置中,我们定义了我们的应用程序将包含一 ...

  8. java ee maven_针对新手的Java EE7和Maven项目–第5部分–使用Arquillian / Wildfly 8进行单元测试...

    java ee maven 从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4部分 , 这是第一篇"额外"文章,基于我在该系列博客文章中"构建&quo ...

  9. 针对新手的Java EE7和Maven项目–第7部分

    从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5 部分 , 第6部分 在上一篇文章(第6章)中,我们发现了如何使用Arquillian和Wildfly 8.1进行 ...

最新文章

  1. golang 二维切片
  2. delphi 程序运行时移动控件
  3. 【干货】精通网红OSPF协议---进阶篇
  4. java断言assert
  5. BZOJ 3513: [MUTC2013]idiots [FFT]
  6. python深浅拷贝 面试_Python面试宝典之基础篇-02
  7. 网络通讯原理简介以及演示通讯过程
  8. CJSON parse.c
  9. 用激光把谷歌的标志投射到月球是否可行?
  10. python使用struct处理二进制数据(使用pack和unpack进行打包和解包)
  11. python为啥叫屁眼_python的递归
  12. mysql查询 NULL
  13. leetcode-53-maxium subarray
  14. shadertoy 实现简易指南针
  15. 【jqprint打印】js两种超简单的打印方法
  16. 开关配置springboot定时任务
  17. SpringBoot自定义banner,如何定制炫酷的banner提升项目B格?
  18. eclipse下载教程
  19. 汽车一键启动开关发动机启动按钮点火开关图解
  20. 卡方检验适用条件及R*C交叉表

热门文章

  1. 使用ueditor实现多图片上传案例——Dao层(BaseDao)
  2. 银行营业网点管理系统——entity类(CityArea)
  3. 配置环境变量 path
  4. java计算出生到现在经历了多少天
  5. SQL注入问题及预防方法
  6. Android public class MyApplication extends MultiDexApplication使用
  7. java文件输入与输出_java文件输入和输出
  8. python3多线程第三方库_Python3 多线程
  9. kali安装python3.7_Debian服务器之安装Python3.7
  10. java javadoc_使用Java 9向Javadoc搜索添加术语