0

私はMavenプロジェクトを作成し、log4jでslf4jを使用しています。また、jibxバインディングを使用しています。

src / main / javaは、jibxバインディングと生成されたクラス用の私のクラスフォルダーsrc / main/configフォルダーです。

両方ともソースフォルダとして宣言されています

log4j.propertiesはクラスパスにあります(javaまたはconfigにない場合は関係ありません)

状況は次のとおりです。log4jは機能します。eclipseから、または作成されたjarファイル(maven)を介してプログラムを開始でき、ログが機能します。しかし、「maven clean」を開始し、プロジェクトを再度ビルドして開始すると、「log4j:WARNロガーのアペンダーが見つかりませんでした」というメッセージが表示されます。Eclipseまたはjarファイルから開始します。log4j.propetiesはtarget/classesにコピーされず、jarファイルにも含まれません。Eclipseのlog4j.propertiesをexamplejavaフォルダーからconfigフォルダーに移動して戻します。もう一度Mavenでコンパイルします。プロパティは、classesフォルダーとjarにあります。Mavenがクリーンになった後は、常にこれを実行する必要があります。きれいにした後、なぜプロパティが失われるのかわかりません。それはまだクラスパスのフォルダにあります。何も変更しません。誰かがそれを修正する方法を知っていますか?本当に気がかりです。Thxからjibxまでは、時々掃除する必要があります。私はグーグルで検索し、プロパティがクラスパスにない場合にのみ問題を見つけました。しかし、私の場合はそうです。

必要な情報を見逃した場合は、それを求めてください:)

編集:ああ、はい。リソースフォルダにないプロパティが問題でした。修理済み。

しかし、プロパティがリソースフォルダにない場合でも奇妙な動作です。Eclipseでも、log4jはMavenのクリーンアップ後に動作を停止します。そして、プロパティを最初のフォルダに移動して戻した後、再び機能します。

4

2 に答える 2

2

このようなプロパティファイルは、本番用にsrc / main/resourcesに配置する必要があります。ユニットテストの構成をsrc/test/resourcesに配置するのとは異なる構成にしたい場合。

于 2012-06-20T13:39:22.600 に答える
0

<build>pom.xml でタグを構成することにより、src/test/main からリソースを読み取るように Maven を指定できます。

<testSourceDirectory>src/main/java/test にもテスト ケースを配置し、タグを構成することでビルド中に実行できます。

<testResources>タグを設定することで、プロジェクト内の任意の場所からプロパティを読み取ることができます

<build>     
        <testSourceDirectory>${basedir}/src/test/java/logical</testSourceDirectory>
        <testResources>
            <testResource>
                <directory>${basedir}/src/main/resources/</directory>
                <includes>
                    <include>*</include>
                </includes>             
            </testResource>
        </testResources>
</build>        
于 2012-06-21T12:46:12.860 に答える