0

春のプロジェクトを開発していますが、junit 内で XML 構成ファイルをロードする際に重大な問題が発生しました (ただし、Web コントローラーからアクセスできます) - XML ファイルをロードできません。

クラスパスを(junitテストで)リストしたところ、残りの中に2つのディレクトリが含まれていることがわかりました。

/var/www/Java/lyricsBase/build/web/WEB-INF/classes/
/var/www/Java/lyricsBase/build/test/classes/

テストに含めたいファイルは 1 つだけです。

  • /WEB-INF/lyricsBaseApp-servlet.xml

そして、以下の 3 つのファイルをインポートします。

  • /WEB-INF/hibernate.xml
  • /WEB-INF/dataSource.xml
  • /WEB-INF/beans.xml

私のプロジェクトをTomcatにデプロイするとconfgファイル/var/www/Java/lyricsBase/build/web/WEB-INF/ABC.xmlがコピーされますが、このディレクトリはクラスパスになく、/var/www/Java/lyricsBase/build/web/WEB-INF/classes代わりに含まれていることがはっきりとわかります。WEB-INF をクラスパスに含めるべきではないことを読みました (これは単なる Java EE の原則です)。OK - では、Web コントローラーと junit テストの両方から簡単にアクセスするには、構成ファイルをどこに配置すればよいでしょうか? 良い習慣はありますか?

4

2 に答える 2

2

war パッケージの WEB-INF/classes の下に構成ファイルを配置すると、クラスパスにロードされます。構成ファイルを簡単に変更できるように、コードを展開された戦争として展開することを検討してください。

また、パッケージングに maven war プロジェクトを使用することも検討してください。その場合、設定ファイルをソース コードの下の src/main/resources に配置するだけで、WEB-INF/classes にパッケージ化されます。

于 2013-02-19T01:13:08.440 に答える
1

私は同じ問題を抱えていて、それ以来、それらをリソースの下の META-INF に入れ始めました。これは、Tomcat で実行されない Spring テンプレート プロジェクトが配置され、私の問題を解決するように見えた場所です。

于 2013-02-18T23:41:29.523 に答える