Maven tomcat:运行目标和基于jsf注释的组件/转换器/验证器扫描

egl*_*ter 6 configuration tomcat maven jsf-2

我正在开发一个JSF 2.0应用程序(Mojarra + Primefaces)并使用maven构建环境.在我使用faces-config.xml文件注册我的自定义转换器和验证器之前,到目前为止一切顺利.然后我看到了一些JSF 2.0的语法糖 - 基于注释的配置方法.现在我想使用它,而不是xml配置文件.一个问题是Mojarra没有扫描我的注释类.我发现我需要将<faces-config ... metadata-complete="false">属性设置为false.现在它可以工作,但只有我开始我的mvn tomcat:run-war目标应用程序,而不是mvn tomcat:run动态项目,这对于开发更舒适.JSP 2.0的规范说:

如果WEB-INF/faces-config.xml文件中的元素包含值为"true"的metadata-complete属性,则实现不得对除实现本身提供的那些类之外的任何类执行注释扫描.否则,继续如下.

如果运行时发现应用程序配置资源中的条目与注释之间存在冲突,则应用程序配置资源中的条目优先.必须扫描WEB-INF/classes中的所有类.

对于应用程序的WEB-INF/lib目录中的每个jar,如果jar包含"META-INF/faces-config.xml"文件或与正则表达式".*.faces-config.xml"匹配的文件(甚至一个空的),必须扫描该罐子里的所有类.

但它没有说明在maven构建环境中运行的动态项目:)!有没有人有解决这个问题的方法?

干杯,

凯文

And*_*son 2

我也遇到了这个问题,但发现添加 war:inplace 目标使其对我有用。即使用

mvn clean war:inplace tomcat:run
Run Code Online (Sandbox Code Playgroud)

而不仅仅是“tomcat:run”,它应该可以正常工作。