问题描述
我希望能够在不同的环境中使用不同的log4j配置.
在我的开发环境中,我想使用log4j.properties(a).但是,当我在生产环境中建造Maven时,我想使用log4j.properties(b).
请告诉我如何在我的pom.xml?
中进行配置.推荐答案
1. in your project add 3 folders : Your Project\src\main\resources\ \A > log4j.properties \B > log4j.properties \Default > log4j.properties 2. in pom.xml <properties> <param>Default</param> </properties> <build> <resources> <resource> <directory>src/main/resources/${param}</directory> </resource> </resources> </build> 3. - if : mvn clean install : classpath => log4j.properties(Default) - if : mvn clean install -Dparam=A : classpath => log4j.properties(A) - if : mvn clean install -Dparam=B : classpath => log4j.properties(B) > much better than using profiles is more extensible without touching the pom
其他推荐答案
您可以使用配置文件实现所需的行为:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>log4j</id> <phase>process-resources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>output_directory</outputDirectory> <resources> <resource>${log4j.file}</resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <log4j.file>path_to_file_A</log4j.file> </properties> </profile> <profile> <id>prod</id> <properties> <log4j.file>path_to_file_B</log4j.file> </properties> </profile> </profiles>
其他推荐答案
如果您有一个简单的环境,则不需要Maven-Resources-Plugin.
在此示例中,log4j.properties B是您用于生产的文件,并且在目录中src/main/java和log4j.properties A是您用于开发的文件,并且位于目录中/Users/junger/.m2/.
.在您的pom.xml中:
<properties> <log4j.properties.directory>src/main/java</log4j.properties.directory> </properties> <build> <resources> <resource> <directory>${log4j.properties.directory}</directory> <includes> <include>log4j.properties</include> </includes> </resource> </resources> </build>
现在,在/users/junger/.m2/settings.xml中(如果不存在,则创建一个):
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <log4j.properties.directory>/Users/devuser/.m2/</log4j.properties.directory> </properties> </profile> </profile>
通过使用此方法,每个开发人员可以具有不同的log4j.properties目录,并且您保持pom.xml清洁.
问题描述
I want to be able to use different log4j configuration for different environments.
In my development environment, I want to use log4j.properties (A). But when I build in Maven for the production environment, I want to use log4j.properties (B).
Please tell me how to configure this in my pom.xml?
推荐答案
1. in your project add 3 folders : Your Project\src\main\resources\ \A > log4j.properties \B > log4j.properties \Default > log4j.properties 2. in pom.xml <properties> <param>Default</param> </properties> <build> <resources> <resource> <directory>src/main/resources/${param}</directory> </resource> </resources> </build> 3. - if : mvn clean install : classpath => log4j.properties(Default) - if : mvn clean install -Dparam=A : classpath => log4j.properties(A) - if : mvn clean install -Dparam=B : classpath => log4j.properties(B) > much better than using profiles is more extensible without touching the pom
其他推荐答案
You can use profiles to achieve the desired behavior:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>log4j</id> <phase>process-resources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>output_directory</outputDirectory> <resources> <resource>${log4j.file}</resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <log4j.file>path_to_file_A</log4j.file> </properties> </profile> <profile> <id>prod</id> <properties> <log4j.file>path_to_file_B</log4j.file> </properties> </profile> </profiles>
其他推荐答案
You don't need the maven-resources-plugin if you have a simple environment.
In this example, log4j.properties B is the file you use for production and is in the directory src/main/java and log4j.properties A is the file you use for development and is in the directory /Users/junger/.m2/.
In your pom.xml:
<properties> <log4j.properties.directory>src/main/java</log4j.properties.directory> </properties> <build> <resources> <resource> <directory>${log4j.properties.directory}</directory> <includes> <include>log4j.properties</include> </includes> </resource> </resources> </build>
Now, in your /Users/junger/.m2/settings.xml (create one if it doesn't exist):
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <log4j.properties.directory>/Users/devuser/.m2/</log4j.properties.directory> </properties> </profile> </profile>
By using this method, each developer can have a different log4j.properties directory and you keep your pom.xml clean.