Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Critical
-
Resolution: Fixed
-
Affects Version/s: 2.2
-
Fix Version/s: 2.3
-
Component/s: None
-
Labels:None
-
Environment:maven-2.0.4 and maven-2.0.5
Mac OS X
-
Testcase included:yes
-
Number of attachments :
Description
When passing a property on the command line to maven using -D it does not properly override values passed to filters.
I have attached a sample project that defines a property in the pom.xml called 'filtered' This property is used as a filter in the filtered.properties file in src/main/filtered/filtered.properties. I have also included a test that gets passed the filtered property as a System property via the surefire plugin. It then loaded the filtered.properties file and tests to ensure the filters match.
The tests pass when run as
mvn test
BUT if I run as
mvn -Dfiltered=from-cmd-line teset
They fail.
I have also included the antrun plugin print its perspective on the value of the property.
Issue Links
- depends upon
-
MRESOURCES-56
use (and release) the maven-filtering component
-
- is duplicated by
-
MRESOURCES-85
command line cannot overwrite pom properties
-
-
MRESOURCES-101
command-line properties not regarded sometimes
-
- is related to
-
MRESOURCES-6
When filtering, properties defined in <project><properties> should be allowed as well.
-
No patches supplied - but a workaround.
It seems maven requires a filter and testfilter property file to exist under the default directory 'src/test//filters/testfilter.properties' and then defined in your pom.
command line parameters then override all other types of parameters set elsewhere.
e.g.
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*/.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>src/main/filters/filter.properties</filter>
<filter>
src/test/filters/testfilter.properties
</filter>
</filters>
</build>