Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: None
-
Labels:None
-
Number of attachments :
Description
Behavior of my application is controlled through set of configuration files(like log4j.propertrties).
I want to control behavior of my application differently for the test
environment and differently for the production environment.
The problem is that currently in maven the "production" resources are preceding the test resources in the classpath
and [test] plugin is always taking them in first order.
I am including short example showing where is the problem.
Basically in it I have two log4j.properties files: one in
'test-resources', second in 'resources' directory.
This example shows that the the one kept in test-resources is never used and it is not possible to easily control
the "test environment" when it is overlapping with "production'
environment".
As a result of this program the output of log statements is always written to production.log. Test resources are containing log4j.properties file which configures the log system for tests and directs log statements to a file test.log. This example shows that
this file is never created.
Other problem here is: if any of the dependencies in the classpath contains
log4j.properties this file will even preceeds the log4j.properties in the classpath.
So the best solution in my opinion will be to have followiing order of entries in the class path:
<classpath>
<pathelement location="$
"/>
<path refid="maven.dependency.classpath"/>
<pathelement location="$
"/>
<pathelement path="$
"/>
</classpath>
The problem is generic and not only typical to log4j. The same applies for example to jndi.properties.
Michal Maczka
Test case - to run type:
maven test