28

Maven プロジェクトで単体テストに Apache Derby 組み込みデータベースを使用しています。残念ながら、テストを実行するたびにderby.log、プロジェクトのルートにファイルが作成されます。データベース自体はtargetディレクトリ( jdbc:derby:target/unittest-db;create=true)に作成されるので問題ありません。リファレンス ガイドを参照した後logDevice、JDBC url ( ) にパラメーターを 設定しようとjdbc:derby:target/unittest-db;create=true;logDevice=/mylogsしましたが、別のログ用のようで、derby.logまだ表示されます。

どんな助けでも大歓迎です。

4

8 に答える 8

50

Cloudscape では、Java システム・プロパティーを使用して、エラー・ログ・メッセージが書き込まれるファイルの名前を指定できますderby.stream.error.file。デフォルト値は「derby.log」です。

Mavenderby.logの確実なテスト フェーズで問題を解決するには、次のようにプラグイン構成にプロパティ定義を追加します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <systemProperties>
            <property>
                <name>derby.stream.error.file</name>
                <value>target/derby.log</value>
            </property>
        </systemProperties>
    </configuration>
</plugin>
于 2009-12-19T16:16:26.970 に答える
23

derby.log次のクラスを作成することで、ファイルを取り除くことができます

public class DerbyUtil {
    public static final OutputStream DEV_NULL = new OutputStream() {
        public void write(int b) {}
    };
}

derby.stream.error.fieldたとえば、次の JVM コマンドライン引数を使用して、JVM システム プロパティを設定します。

-Dderby.stream.error.field=DerbyUtil.DEV_NULL

それが原因であるクレジット。

于 2009-06-17T01:34:11.437 に答える
8

derby.properties ファイルに以下を含めます。

derby.stream.error.file=/dev/null

( また

derby.stream.error.file=\\Device\\Null

Windows の場合)

于 2012-08-02T14:09:48.517 に答える
3

ダービーのホームを次の場所に、target/derbyまたは次の方法で設定することもできますtarget

System.setProperty("derby.system.home", new File("target/derby").getAbsolutePath());

次に、JDBC URL を使用しますjdbc:derby:unittest-db;create=true。次に、右のフォルダーに derby.log が表示されます。

于 2016-07-27T12:13:20.110 に答える
2

構成にアクセスできない場合は、接続を確立する前にこれを実行できます。

System.setProperty("derby.stream.error.field", "MyApp.DEV_NULL");
于 2015-08-31T10:35:08.613 に答える
2

私は別の解決策を思いつきました。これを試してください。それは私のために働いた。ここで行っているのは、System.stream.error.file パスを変更し、プロパティ ファイルの下にあるプロパティの 1 つに設定したことです。以下のコードを applicationContext.xml ファイルに追加するだけで機能します。

<bean id="setDerbyLog" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
  <property name="targetClass"><value>java.lang.System</value></property>
  <property name="targetMethod"><value>setProperty</value></property>
  <property name="arguments">
    <list>
      <value>derby.stream.error.file</value>
      <value>${derby.stream.error.file}</value>
    </list>
  </property>
</bean>
于 2010-07-06T12:58:59.900 に答える
0

これはderby.logファイルの問題の解決策ではなく (多くの人が既に解決方法を示しています)、提案です。テストにderby-maven-pluginを使用しないのはなぜですか? derby.logファイルを の下に配置するtarget/derbyため、ゴミは残りません。

私の回答 hereで説明されているように、私が作成した derby-maven-plugin を介して Derby をデータベースとして使用でき、GitHubおよび Maven Central から入手できます。

于 2015-12-07T17:06:17.413 に答える