3

データベースに対していくつかのテストを実行するMavenプロジェクトがあります。を使用してこれらのテストを実行できますmvn clean verifyが、いくつかのデータベースプロパティを指定したいと思います。データベース接続を作成するためにJava内で使用できるpom.xmlファイル内のデータベース名、ポート名など。

これをPOMに追加しました。

  <properties>
    <server>localhost</server>
    <database>mydatabase</database>
    <port>1433</port>
  </properties>

Javaコードからこれらのプロパティにアクセスできますか、またはMavenプラグインを作成し、これらのプロパティをパラメーターとしてプラグインに渡してclean verify、カスタムプラグインから呼び出す必要がありますか?

4

3 に答える 3

5

リソース フィルタリングを有効にします (例: テスト リソース用):

<build>
  <testResources>
    <testResource>
      <directory>src/test/resources</directory>
      <filtering>true</filtering>
    </testResource>
  </testResources>
</build>

以下の下に db.properties を作成しますsrc/test/resources

server=${server}
port=${port}

あなたのテストで、読んでくださいdb.properties

InputStream inputStream = getClass().getResourceAsStream("/db.properties")
Properties props = new Properties();
props.load(inputStream);

Maven: The Complete Referenceには、それがどのように機能するかの概要があります。

于 2013-01-11T17:39:00.050 に答える
0

テストを実行するとき、テストを実行するコマンド ラインで -D に相当する Surefire プラグインを使用して、Maven プロパティを Java アプリケーションに渡すことができます。\

これは、その方法を示しています。

http://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html

于 2013-01-11T17:11:04.467 に答える
0

いいえ、プロジェクトからこれらのプロパティ (Maven プロパティ) を使用することはできませんSystem.getProperty()

Maven はビルド時に機能し、コードは実行時に機能するためです。ただし、ビルド中にmavenにいくつかのプロパティ(プロパティファイルなど)を設定させると、クラスがそれらの値を取得できます。

通常、システム プロパティは jvm の起動時に設定されます。プロジェクトが実行されている VM がプラグインなどによって maven から開始された場合mvn jetty:run、maven で定義されたプロパティを取得する機会があります。ただし、プロジェクトが Maven とは関係のない VM 上で実行されている場合、これらのプロパティを取得することはできません。

于 2013-01-11T17:17:33.423 に答える