CDI: beans.xml, dove ti metto?

Sto usando Weld come implementazione CDI. Il mio test di integrazione, che tenta di assemblare il contenitore Weld di istanziamento del grafo di oggetti, funziona bene quando ho bean.xml vuoto in src/test/java/META-INF/beans.xml . Ecco questo semplice test:

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

Ora quando mvn clean install , ottengo sempre: Missing beans.xml file in META-INF!

Le mie cartelle di root sono “src” e “web” che contiene la cartella WEB-INF, ma ho anche provato a usare la struttura predefinita di maven e rinominato “web” in “webapp” e spostato in src / main. Ho provato tutte le posizioni ragionevoli a cui avrei potuto pensare:

  - 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 

Niente funziona finora: /

Per gli imballaggi EJB e JAR è necessario inserire beans.xml in src/main/resources/META-INF/ .

Per gli imballaggi WAR è necessario inserire beans.xml in src/main/webapp/WEB-INF/ .

Ricordare che solo i file .java devono essere inseriti nelle directory src/main/java e src/test/java . Le risorse come .xml file .xml devono essere in src/main/resources .

Solo per completare la risposta di cui sopra, ecco un riferimento ufficiale su questo: https://docs.oracle.com/javaee/6/tutorial/doc/gjbnz.html

citazione:

Un’applicazione che utilizza CDI deve avere un file denominato beans.xml. Il file può essere completamente vuoto (ha contenuto solo in alcune situazioni limitate), ma deve essere presente. Per un’applicazione Web, il file beans.xml deve trovarsi nella directory WEB-INF. Per i moduli EJB o i file JAR, il file beans.xml deve essere nella directory META-INF.

http://www.javamonamour.org/2017/11/cdi-in-java-se-8.html qui puoi vedere dove l’ho messo con successo, cioè sotto src / META-INF. Il post contiene un esempio operativo completo di CDI in Java SE.