1

Maven化されたJava Spring Webアプリケーションに取り組んでいます。私たちはEclipse IDEで自動再起動とホットデプロイを広範囲に使用していますが、MavenとSpring構成を混在させ始めると、Eclipse内での統合がうまくいかないことに気付きました。プロジェクトのビルド中に maven-war-plugin によって置き換えられる web.xml に maven 変数が必要です。

web.xml の Maven 変数:

 <env-entry>
  <env-entry-name>spring.profiles.active</env-entry-name>
  <env-entry-type>java.lang.String</env-entry-type>
  <env-entry-value>${profileName}</env-entry-value>
 </env-entry>

maven 変数は、ビルド プロセス中に maven-war-plugin に置き換えられます。

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>    
            <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
            </configuration>
        </plugin>

このソリューションは、コマンドラインからmavenでプロジェクトをビルドしている場合にのみ機能します。Eclipse のホット デプロイ メカニズムは、これらすべての Maven プラグインを明らかにスキップします...

これは良い習慣だと思いますか?この構成でEclipse内でシームレスに動作する方法はありますか?

私はおそらくmaven jettyプラグインなどを使用してIDEから実行しますが、シェルウィンドウでコンソールを操作するのは好きではありません-Eclipseコンソールの方が少し快適です。

4

1 に答える 1

0

Maven ビルドによるトークン フィルタリングは、Eclipse のホット デプロイメントでは機能しません。

1 つのオプションは、 -Dspring.profiles.active="dev" を JVM/App プロセスに渡すことです。

プロファイルの読み込みを制御するには、環境変数を使用することを好みます。たとえば、MY_PROJECT_ENV=dev です。

次のコードは、変数を読み取り、プロファイルを初期化します。

public class ProfileInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
    public void initialize(ConfigurableApplicationContext applicationContext) {
        ConfigurableEnvironment environment = applicationContext.getEnvironment();
        environment.setActiveProfiles(System.getProperty("MY_PROJECT_ENV"));
    }
}
于 2013-04-08T07:55:19.513 に答える