2012-10-24 8 views
39

Używam Weld jako implementacji CDI. Mój test integracji, który próbuje zmontować tworzenie instancji wykresu obiektowego Pojemnik spawalniczy działa dobrze, kiedy mam pusty plik bean.xml w src/test/java/META-INF/beans.xml. Tutaj jest to prosty test:CDI: beans.xml, gdzie mogę Cię umieścić?

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

Teraz gdy uruchamiam mvn clean install, zawsze otrzymujemy: Missing beans.xml file in META-INF!

Moje foldery korzeniowe są "src" i "web", który zawiera katalog WEB-INF, ale również próbował aby użyć domyślnej struktury maven i przemianowanej na "web" na "webapp" i przeniesiono ją do src/main. Próbowałem wszystkich rozsądnych lokalizacje mogłyby myślałem:

- 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 

nic nie działa tak daleko:/

+0

W moim projekcie CDI plik beans.xml znajduje się w src \ main \ webapp \ WEB-INF, aw moim pliku wojennym jest również w katalogu WEB-INF. – kaos

Odpowiedz

74

Dla EJB i pakowania JAR należy umieścić beans.xml w src/main/resources/META-INF/.

W przypadku opakowania WAR należy umieścić beans.xml w src/main/webapp/WEB-INF/.

Pamiętaj, że tylko pliki .java należy umieścić w katalogach src/main/java i src/test/java. Zasoby, takie jak pliki .xml, powinny znajdować się w src/main/resources.

+0

Idealne, w moim przypadku działa w src/main/resources/META-INF – Xorty

+0

W moim przypadku testuję cdi-unit (używa Weld) muszę umieścić go w moim src – dalvarezmartinez1

+0

@ dalvarezmartinez1 Założę się, że możesz przenieść fasolę .xml do/src/main/resources w twoim przypadku; powinien on znaleźć się w folderze "classes" po zbudowaniu –

8

Wystarczy uzupełnić powyższą odpowiedź, tutaj jest oficjalna wzmianka na ten temat: https://docs.oracle.com/javaee/6/tutorial/doc/gjbnz.html

cytat:

Aplikacja korzystająca CDI musi mieć plik o nazwie beans.xml. Plik może być całkowicie pusty (ma treść tylko w pewnych ograniczonych sytuacjach), ale musi być obecny. W przypadku aplikacji WWW plik beans.xml musi znajdować się w katalogu WEB-INF. W przypadku modułów EJB lub plików JAR plik beans.xml musi znajdować się w katalogu META-INF.

+4

W języku Java EE 7 "beans.xml" nie jest już obowiązkowe. Zobacz [Oracle Java EE Tutorial] (https://docs.oracle.com/javaee/7/tutorial/cdi-basic013.htm) –

Powiązane problemy