テスト戦争と本番戦争を作成する必要があります。これらはlog4j.properties
ディレクトリに別のWEB-INF
ファイルがあります。これらのファイルはlog4j.properties
(テスト戦争)とdev.log4j.properties
(本番環境用)です。
プロダクションウォーのためにdev.log4j.properties
ファイルをlog4j.properties
ファイルにコピーする方法
「dev」および「prod」プロファイルを作成し、各プロファイルの代替リソースセットを選択します。デフォルトでDevをアクティブにします。
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources/dev</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>prod</id>
<build>
<resources>
<resource>
<directory>src/main/resources/prod</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
目的のプロファイルを使用してビルド:mvn install -Pdev
またはmvn install -Pprod
Maven-resourcesプラグインを使用してこれを解決しました。本番環境用のリソースを含むprodディレクトリを作成し、プロセスリソースフェーズでWEB-INF/classesディレクトリにコピーしました。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>copy-prod-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>webapp/WEB-INF/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources/prod</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
上記のコードは私にとってはうまくいきませんでした-それを次のように変更する必要がありました:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-prod-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- this is important -->
<overwrite>true</overwrite>
<!-- this as well (target/ was missing) -->
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources/prod</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
最後の応答は機能しています。しかし、それを動作させるにはバージョンを与える必要があります。
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>copy-prod-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- this is important -->
<overwrite>true</overwrite>
<!-- target -->
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<!-- source -->
<directory>src/main/resources/prod</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
別の方法は、maven-antrun-pluginを使用することです
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>build.env: ${build.env} </echo>
<delete file="src/main/resources/log4j.properties" />
<copy file="src/env/${build.env}/log4j.properties"
tofile="src/main/resources/log4j.properties" />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
リソースファイルが次の構造にあると仮定します。
src/
env/
dev/
log4j.properties
local/
log4j.properties
prod/
log4j.properties
Mavenビルドを行う場合、環境ごとに次のコマンドを実行します。
mvn package -Dbuild.env=dev
mvn package -Dbuild.env=local
mvn package -Dbuild.env=prod