java java-ee maven cdi jboss-weld

java - CDI: beans.xml, ¿dónde te pongo?



java-ee maven (3)

Para los paquetes EJB y JAR, debe colocar beans.xml en src/main/resources/META-INF/ .

Para el empaquetado WAR, debe colocar beans.xml en src/main/webapp/WEB-INF/ .

Recuerde que solo los archivos .java deben colocarse en los directorios src/main/java y src/test/java . Los recursos como los archivos .xml deben estar en src/main/resources .

Estoy usando Weld como implementación de CDI. Mi prueba de integración, que intenta ensamblar el gráfico de objetos instanciar el contenedor de soldadura funciona bien , cuando tengo beans.xml vacíos en src/test/java/META-INF/beans.xml . Aquí está esa prueba simple:

public class WeldIntegrationTest { @Test public void testInjector() { new Weld().initialize(); // shouldn''t throw exception } }

Ahora cuando ejecuto mvn clean install , siempre obtengo: ¡ Missing beans.xml file in META-INF!

Mis carpetas raíz son "src" y "web" que contienen la carpeta WEB-INF, pero también intenté usar la estructura maven por defecto y renombré "web" a "webapp" y la moví a src / main. Intenté todas las ubicaciones razonables en las que pude pensar:

- src/main/java/META-INF/beans.xml - src/test/java/META-INF/beans.xml - web/WEB-INF/beans.xml - src/main/webapp/WEB-INF/beans.xml - src/main/webapp/META-INF/beans.xml - src/main/webapp/META-INF/(empty) and src/main/webapp/WEB-INF/beans.xml

Nada funciona hasta ahora: /


Solo para complementar la respuesta anterior, aquí hay una referencia oficial sobre esto: https://docs.oracle.com/javaee/6/tutorial/doc/gjbnz.html

citar:

Una aplicación que usa CDI debe tener un archivo llamado beans.xml. El archivo puede estar completamente vacío (tiene contenido solo en ciertas situaciones limitadas), pero debe estar presente. Para una aplicación web, el archivo beans.xml debe estar en el directorio WEB-INF. Para módulos EJB o archivos JAR, el archivo beans.xml debe estar en el directorio META-INF.