0

Maven を使用してコンパイル/ビルドする Spring Web プロジェクトがあります。プロジェクトのビルドに問題はありません。Tomcat (v6) サーバー上の Eclipse (3.3.2) でプロジェクトを実行しようとしています。

Spring プロジェクトの一部として、WEB-INF ディレクトリに spring-servlet.xml ファイルがあります。このファイルには、データソース構成を持つ別のリソース xml ファイルが含まれています。

<import resource="classpath:${datasourceInclude}.xml"/>

プロジェクトが Maven を使用してコンパイルされると、変数 ${datasourceInclude} が解決され、適切な値で設定され、適切な値を持つ spring-servlet.xml が生成されます。

<import resource="classpath:datasourceLocal.xml"/>

しかし、Eclipse (Tomcat) でプロジェクトを実行しようとすると、次のエラーが発生します。

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath:${datasourceInclude}.xml]
Offending resource: ServletContext resource [/WEB-INF/spring-servlet.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [${datasourceInclude}.xml]; nested exception is java.io.FileNotFoundException: class path resource [${datasourceInclude}.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
...
...

基本的に、Tomcat を起動すると、${datasourceInclude} 変数を持つ /src/main/webapp/WEB-INF フォルダーから spring-servlet.xml を選択しようとします。

spring-servlet.xml を変更して ${datasourceInclude} 変数の代わりにハードコード値を追加する必要がないように、この問題を修正する方法を教えてください。

4

2 に答える 2

1

war:inplaceMaven プロジェクトの構成ページで、リソースのフィルタリングのために実行されるゴールのリストに追加してみてください。

プロジェクトを右クリックし、[プロパティ] > [Maven] > [ライフサイクル マッピング] に移動し、以下に示すように、リソースの変更時に呼び出す目標を追加war:inplaceします。

代替テキスト

于 2010-03-10T15:06:01.370 に答える
0

Spring XML のプロパティ/変数名を解決する責任は誰にありますか? これは Maven を介してコンパイル時に行われますか、それとも実行時に行われることになっていますか? 実行時に、Spring を使用していますPropertyPlaceholderConfigurerか?

于 2010-03-10T10:47:10.733 に答える