2017-06-09 9 views
-2

私はspringmvc mavenプロジェクトを持っていました。IntelliJ Ideaで、src/main/resourcesフォルダにlogbak.xmlを置き、src/test/resourcesフォルダに異なる設定のlogbak.xmlを入れました。クラスとテストクラスの違い

Junit Testを実行しているとき、テストフォルダ内のlogbak.xmlが機能しました。 TomcatサーバーでWebを実行すると、メインフォルダ内のlogbak.xmlが機能しました。

testフォルダにlogbak.xmlがない場合、メインフォルダ内のlogbak.xmlが機能しました。

なぜlogbak.xmlを2回ロードできないのですか? 上記の異なる実行時に最初にロードできるファイルを決定するにはどうすればよいですか?

答えて

0

正規のクラス(src/main/...)は、スタンドアロン(テストパートに含まれていないもの)でも動作します。これらは、プログラムやライブラリの実際の作業を実装するクラスです。 したがって、すべてをパッケージ化すれば、通常のクラスだけが含まれます。

ご覧のとおり、src/mainからlogback.xmlが使用されます。

テストクラス(src/test/...)は、正規のクラスをテストするためのクラスです。したがって、テストクラスとクラスパスの通常のクラス(および対応するリソースも必要です)が必要です。 テストクラスは、通常のクラスBy Maven(IDEはMavenが提供する情報を使用する)の前にクラスパスに追加されるため、テストパートに存在するクラス/リソースの優先度が高くなります。要求されたクラス/リソースがテストパートに存在していてもメインパートに存在しない場合は、あなたが観察したのと同じように、メインパートのものがロードされます。

+0

タンク。誰が優先順位を設定するか知りたいですか? IntelliJかmaven? – lihongxu

+1

pom.xmlにソースフォルダを手動で定義することができます。しかし、特定の設定をしたい場合は、同じ名前の2つのlogback.xmlファイルを作成しないでください。別の名前を使用し、システムプロパティ 'logback.configurationFile'をログバック設定ファイルとして設定します - https://logback.qos.chを参照してください。 /manual/configuration.html#configFileProperty – Robert

+0

ありがとう、おそらく私の質問は明確ではなかった。あなたのコメントについて "テストクラスはクラスパスの前に追加されます。"私は、どちらがテストパートにIDEまたはMavenの優先順位を高くするか不思議に思っていました。 IDEまたはmavenコマンドでテストを実行すると、テストパートがクラスパスに追加されます。どちらの線量でテスト部分が追加されますか? IDEまたはMaven – lihongxu

関連する問題