2010-11-28 10 views
1

私はSpringで国際化を使用しています。プロパティファイルはクラスパス上にある必要があります。私はクラスパス上にある必要があるいくつかのXMLファイルも持っています。それらのリソースをサブディレクトリの "src"の中に含めるだけで、クラスパスにビルドさせるか、起動時に別のフォルダをクラスパスに追加する方が良いでしょうか?私はAntを使用していますが、見た目からはこれはMavenが取ったアプローチです(srcまたはtestのすべて)。私は最も広く受け入れられている業界標準またはより良い選択肢を探しています。ありがとう!Java Webアプリケーションでクラスパス上のリソースを含む最も一般的な標準は何ですか?

答えて

1

はちょうどそれらをクラスパス

に構築でき、サブディレクトリにある「SRC」の内部でこれらのリソースを含める、とすることが許容される問題のリソースの唯一の目的に依存します。このアプローチでは、このようなリソースファイルのマイナー編集は、完全な再構築、再デプロイ、再起動が必要になります。

web.xmlapplication.xmlのようなワンタイムリードの起動ファイルやアプリケーション全体の設定ファイルには必ずしも影響はないかもしれません。これは通常、完全な再構築/再配布/再コンパイルが必要なJavaソースコードの変更に影響を与えますとにかくなど。

i18nのプロパティファイルや環境固有の設定ファイル(serveradminや顧客のような非開発者が管理する/実行することができる)のようなランタイムファイルの場合は、それをWebアプリケーション内にパッケージ化することは有用ではありません。これには、編集後にWebアプリケーションを再構築する方法についての知識が必要です。むしろ、ウェブアプリケーションを再起動するだけで構成の変更を反映する必要があるように、外部化することを好むでしょう。例えば、ResourceBundleのように、自動でリロードされます。

私は通常、このようなファイルをservletcontainerに沿って固定パスに入れ、そのパスをservletcontainerのランタイムクラスパスに追加します。例えばTomcatの場合、プロパティは/conf/catalina.propertiesに設定可能です。例えば。

shared.loader=/var/webapp 

このフォルダのすべては、servletcontainer(およびwebappの)実行時クラスパスで使用されます。

+0

オープンソースアプリケーションの場合(私が現在ではありません)、誰も同じサーブレットコンテナを使用していると想定していませんか? –

+0

私はこの質問のポイントを取得しません。この質問の背後にある根拠/推論は何ですか?私はそれがTomcatほどでしかないことを暗示するつもりはありませんでした。 – BalusC

+0

私は、ほとんどの人がWARを作業ディレクトリに投げ込むだけでアプリケーションを起動して実行することを好み、Tomcatのように解凍して実行することを好みました。そのため、実行時に追加のクラスパスを設定する必要があるのが適切かどうかという疑問を尋ねました。この場合、アプリケーションを実行しているすべての人に、この新しいパスを設定する必要があることを伝える必要があります。 –

0

WEB-INF/classesディレクトリに置いたものは、自動的にCLASSPATHに格納されます。

私は通常、.javaファイルを/src/testというディレクトリに入れます。私が他の場所に置いたリソースは、WEB-INF/classesで終わらなければなりません。これは、私のIDE(IntelliJ)またはAntで、WARファイルが作成されたときにそこに配置されます。

私は、Springの例に従い、リソースを配置することをお勧めします。

たとえば、Velocityをテンプレートエンジンとして使用すると、Springの設定では/ WEB-INF/vm_viewsの下に置くことができます。

プロパティはWEB-INF/classesに入れられます。

例については、Springのドキュメントを参照してください。

関連する問題