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.
http://www.javamonamour.org/2017/11/cdi-in-java-se-8.html Aquí puede ver dónde lo he puesto con éxito, que está bajo src / META-INF. La publicación contiene un ejemplo completo de trabajo de CDI en Java SE.