web-dev-qa-db-ja.com

CDI:beans.xml、どこに置きますか?

WeldをCDI実装として使用しています。 src/test/Java/META-INF/beans.xmlに空のbeans.xmlがある場合、Weldコンテナをインスタンス化するオブジェクトグラフうまく動作するを組み立てようとする統合テスト。以下に簡単なテストを示します。

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

mvn clean installを実行すると、常に次のようになります:Missing beans.xml file in META-INF!

私のルートフォルダーはWEB-INFフォルダーを含む「src」と「web」ですが、デフォルトのMaven構造を使用して「web」を「webapp」に名前変更して、src/mainに移動しました。私が考えることができるすべての合理的な場所を試しました:

 - 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

これまでのところ何も動作しません:/

52
Xorty

EJBおよびJARパッケージの場合、beans.xmlsrc/main/resources/META-INF/に配置する必要があります。

WARパッケージの場合、beans.xmlsrc/main/webapp/WEB-INF/に配置する必要があります。

.Javaファイルのみをsrc/main/Javaおよびsrc/test/Javaディレクトリに配置する必要があることに注意してください。 .xmlファイルなどのリソースはsrc/main/resourcesにある必要があります。

93
maba

上記の答えを補足するために、これに関する公式リファレンスがあります: https://docs.Oracle.com/javaee/6/tutorial/doc/gjbnz.html

見積もり:

CDIを使用するアプリケーションには、beans.xmlという名前のファイルが必要です。ファイルは完全に空にすることができます(特定の限られた状況でのみコンテンツを持っています)が、存在する必要があります。 Webアプリケーションの場合、beans.xmlファイルはWEB-INFディレクトリになければなりません。 EJBモジュールまたはJARファイルの場合、beans.xmlファイルはMETA-INFディレクトリになければなりません。

10
99Sono

http://www.javamonamour.org/2017/11/cdi-in-Java-se-8.html ここで、src/METAの下にある成功した場所を見ることができます-INF投稿には、Java SE。

0