Maven
  1. Maven
  2. MNG-4123

still can't override properties in pom.xml with -D command line settings. regression?

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Cannot Reproduce
    • Affects Version/s: 3.0-alpha-2
    • Fix Version/s: None
    • Component/s: Command Line
    • Labels:
      None
    • Environment:
      windows vista
    • Complexity:
      Intermediate
    • Number of attachments :
      1

      Description

      Hello...
      The original bug ( http://jira.codehaus.org/browse/MNG-1992
      ) was marked as fixed in 2.1.0, and 3.0-alpha-1

      I used a slightliy modifed version of the test case described in http://jira.codehaus.org/browse/MNG-3417
      to understand what I thought i was seeing...

      It still seems not to work as described in the original bug.

      I tried two things...

      1) tried resource filtering (running > mvn -Dtest.property='overridden' clean verify < and catting test.xt as described in the original bug report.
      same result.

      Then I tried updating my maven resources plugin to 2.3 – running with maven 3.0-alpha-2 (see modified pom.xml, below). Stil no luck.

      2) next i tried
      mvn -e -Dtest.result=haha help:effective-pom

      the property setting given for test.result was still default.

      So it seems like there are two failure modes . one for resource filtering, and one for interpolation process that does not involve filtering..
      or maybe they have they same root cause. In any case it seems not to work still (at least on windoze).

      thanks !
      -chris

      modified pom.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.test</groupId>
        <artifactId>test</artifactId>
        <version>1.0</version>
        <packaging>jar</packaging>
      
      
        <properties>
           <test.property>default</test.property>
           <test.include.pattern>*.txt</test.include.pattern>
        </properties>
        <profiles>
             <profile>
                  <id>test.profile</id>
                  <properties>
                     <test.property>profile</test.property>
                     <test.include.pattern>*.txt</test.include.pattern>
                  </properties>
              </profile>
        </profiles>
      
          <build>
           <pluginManagement>
              <plugins>
                            <plugin>
                                <artifactId>maven-resources-plugin</artifactId>
                                    <version>2.3</version>
                            </plugin>
      
              </plugins>
           </pluginManagement>
      
      
      
      
          <testResources>
             <testResource>
                 <directory>${basedir}/src/test/resources</directory>
                 <filtering>true</filtering>
                 <includes>
                     <include>${test.include.pattern}</include>
                 </includes>
             </testResource>
         </testResources>
         </build>
      </project>
      

        Issue Links

          Activity

          Hide
          Benjamin Bentmann added a comment -

          I can't reproduce the problem you mentioned in the issue title. Running "mvn help:effective-pom -D test.property=cli" on the attached project using Maven 3.0-alpha-2 outputs

          <properties>
            <!--
            NOTE: model properties get never overriden by system properties.
            However, system properties take precedence over model properties
            during interpolation.
            -->
            <test.property>default</test.property>
            <test.result>cli</test.result>
          </properties>
          

          The effective value of test.result is however known to be wrong when "mvn ... -P test" is invoked instead (see MNG-3900).

          Show
          Benjamin Bentmann added a comment - I can't reproduce the problem you mentioned in the issue title. Running "mvn help:effective-pom -D test.property=cli" on the attached project using Maven 3.0-alpha-2 outputs <properties> <!-- NOTE: model properties get never overriden by system properties. However, system properties take precedence over model properties during interpolation. --> <test.property> default </test.property> <test.result> cli </test.result> </properties> The effective value of test.result is however known to be wrong when "mvn ... -P test" is invoked instead (see MNG-3900 ).
          Hide
          Benjamin Bentmann added a comment -

          About resource filtering: This is beyond the Maven core, so any issues with resources need to be filled against the Maven Resources Plugin.

          Show
          Benjamin Bentmann added a comment - About resource filtering: This is beyond the Maven core, so any issues with resources need to be filled against the Maven Resources Plugin.
          Hide
          Steve Holmes added a comment -

          I copied the example POM and my output shows:

          <properties>
          <test.include.pattern>*.txt</test.include.pattern>
          <test.property>default</test.property>
          </properties>

          Shouldn't the test.property show "cli"?

          -Steve

          Show
          Steve Holmes added a comment - I copied the example POM and my output shows: <properties> <test.include.pattern>*.txt</test.include.pattern> <test.property>default</test.property> </properties> Shouldn't the test.property show "cli"? -Steve
          Hide
          Benjamin Bentmann added a comment -

          As said:

          NOTE: model properties get never overriden by system properties. However, system properties take precedence over model properties during interpolation.

          The CLI directive -D defines system properties which are kept separate from the <properties> defined in the POM. The system properties are merely the preferred data source during POM interpolation or plugin configuration. <properties> defined by profiles on the other hand override the properties in the POM, because these are the same kind of property sources.

          Show
          Benjamin Bentmann added a comment - As said: NOTE: model properties get never overriden by system properties. However, system properties take precedence over model properties during interpolation. The CLI directive -D defines system properties which are kept separate from the <properties> defined in the POM. The system properties are merely the preferred data source during POM interpolation or plugin configuration. <properties> defined by profiles on the other hand override the properties in the POM, because these are the same kind of property sources.
          Hide
          Steve Holmes added a comment -

          I should mention I am using 2.1

          Show
          Steve Holmes added a comment - I should mention I am using 2.1
          Hide
          chris bedford added a comment -

          Hi, Benjamin:
          thanks for your previous comments on this bug. I hope you don't mind this request to
          reopen this issue. I think reopening is warranted because at least two people have seen
          inconsistent behavior from what you reported you saw when you ran

          "mvn help:effective-pom -D test.property=cli"

          You see
          > <test.result>cli</test.result>

          in the output.

          I see: <test.result>default</test.result>

          If it helps I would be happy to package up a vmware image that contains my complete environment
          and allows you to repro the behavior i have observed in maven 2.1 (on both windows and Linux).

          I can't reproduce the problem you mentioned in the issue title. Running "mvn help:effective-pom -D test.property=cli" on the attached project using Maven 3.0-alpha-2 outputs

          <properties>
          <!--
          NOTE: model properties get never overriden by system properties.
          However, system properties take precedence over model properties
          during interpolation.
          -->
          <test.property>default</test.property>
          <test.result>cli</test.result>
          </properties>

          Show
          chris bedford added a comment - Hi, Benjamin: thanks for your previous comments on this bug. I hope you don't mind this request to reopen this issue. I think reopening is warranted because at least two people have seen inconsistent behavior from what you reported you saw when you ran "mvn help:effective-pom -D test.property=cli" You see > <test.result>cli</test.result> in the output. I see: <test.result>default</test.result> If it helps I would be happy to package up a vmware image that contains my complete environment and allows you to repro the behavior i have observed in maven 2.1 (on both windows and Linux). I can't reproduce the problem you mentioned in the issue title. Running "mvn help:effective-pom -D test.property=cli" on the attached project using Maven 3.0-alpha-2 outputs <properties> <!-- NOTE: model properties get never overriden by system properties. However, system properties take precedence over model properties during interpolation. --> <test.property>default</test.property> <test.result>cli</test.result> </properties>
          Hide
          Benjamin Bentmann added a comment -

          We might want to start with a full debug log or your build, i.e.

          mvn help:effective-pom -D test.property=cli -X > debug.log
          
          Show
          Benjamin Bentmann added a comment - We might want to start with a full debug log or your build, i.e. mvn help:effective-pom -D test.property=cli -X > debug.log

            People

            • Assignee:
              Benjamin Bentmann
              Reporter:
              chris bedford
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: