1

初心者のJavaの質問があります。

SQLServerで使用するいくつかのストアドプロシージャのJ/DBUnitテストスイートを作成する必要がありました。これらのテストでは、Javaプロジェクトと同じディレクトリに最初に配置したいくつかのサブディレクトリにあるいくつかのXMLファイルを使用します。

とにかく、これらのテストをチェックインすると、SVNマネージャーは.javaファイルをツリーの一部に保持し、リソース(XMLファイルや必要なJARなど)をツリーの別の部分に保持したいと考えていました。

そのため、私のテストでは元々、現在は機能しない相対パスを使用してXMLファイルを参照していました。

私の質問は:

  1. XMLファイルを含むディレクトリをCLASSPATHで使用できるようにすることはできますか(そうなることを願っています)。
  2. それが機能すると仮定して、この方法で含まれているコード内のファイルを参照するにはどうすればよいですか?
  3. このためにCLASSPATHを使用するべきではない場合は、他のソリューションを利用できます。
4

4 に答える 4

3

calsspathを忘れてください。XMLファイルの相対パスのルートディレクトリを定義するパラメーター/構成をテストに提供します。

于 2012-07-26T20:13:00.910 に答える
2

クラスパスの使用は問題ありません。標準のMavenプロジェクトのレイアウトは次のようになります。

  • src
    • 主要
      • java
      • 資力
    • テスト
      • java
      • 資力
  • 目標
    • クラス
    • テストクラス

コンパイラはsrc/main/javaをtarget/classesにコンパイルし、src / main/resourcesのリソースはテストと同様にtarget/classesフォルダにコピーされます。テストにクラスとテストクラスを含むクラスパスがある場合、すべて正常に機能します。

プロジェクトのレイアウトはどうですか、どのように構築されていますか?

于 2012-07-26T20:37:34.433 に答える
1

いいえ、このインスタンスではCLASSPATHを使用しないでください。これはJavaによって使用されるためです。ただし、XMLファイルが格納されているディレクトリを示す環境変数または構成ファイルから値をロードすることにより、同様のアプローチを使用できます。

于 2012-07-26T20:15:53.210 に答える
0

クラスパスを変更せずにこれを行うことができます。リソースファイルを別のディレクトリに保存し、ビルドプロセスを実行するときにクラスパスのディレクトリにコピーするという考え方です。

構成例は次のとおりです。

source Directory is ${basedir}/src/main/java

resource directory is ${basedir}/src/main/resources

ビルドスクリプトで、.javaファイルとリソースファイル( .xml)の両方をクラスパスのディレクトリにコピーします。たとえば、次のようになります。

${basedir}/target/classes

テストコードはターゲットディレクトリに対して実行されます。ターゲットディレクトリはSVNにチェックインされないため、SVN管理者は満足できず、コードを変更する必要はありません。

于 2012-07-26T20:38:52.027 に答える