Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-7204

Ant properties are quoted incorrectly on Windows

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • core
    • None
    • Hudson 1.371
      Ant 1.7.1

      The latest Hudson seems to quote Ant properties incorrectly. Older versions of Hudson did not have the same problem. The quote problem makes it impossible to define an empty Ant property.

      Steps to reproduce:

      1. Create new free style job
      2. Run the job to create a workspace folder
      3. Add the following file to the job workspace:
        build.xml
        <project default="build" basedir=".">
            <target name="build">
                <echo message="Value: '${value}'" />
            </target>
        </project>
        
      4. Reconfigure the hudson job to invoke Ant
      5. In the Ant properties field write:
        value=""
        
      6. Run the job

      Excepted result:
      The Ant script should show that the value property was blank

      Actual result:
      The Ant script show that the value property is actual "".

      Additional information:
      In the console output of the job Hudson 1.371 displays:
      [workspace] $ cmd.exe /C '"ant.bat "-Dvalue=""""" && exit %%ERRORLEVEL%%"'

      In the console output of the job in older Hudson's (1.361 and earlier) displayed:
      [workspace] $ cmd.exe /C '"ant.bat -Dvalue="" build && exit %%ERRORLEVEL%%"'

          [JENKINS-7204] Ant properties are quoted incorrectly on Windows

          Anders Hansen added a comment -

          Defining a property without a value makes the Hudson build fail. If the test is run directly against Ant from a command prompt Ant reports: "Missing value for property value".

          Steps:
          1) Change the Ant properties to:

          value=
          

          Hudson console output:

          Started by user anonymous
          Building on master
          [workspace] $ cmd.exe /C '"ant.bat -Dvalue= && exit %%ERRORLEVEL%%"'
          Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar
          Missing value for property value
          Finished: FAILURE
          

          Single quotes seems to escaped correctly in Hudson. Ant reports the same value in Hudson as when the the script is run from a command prompt.

          Hudson console output on single quotes:

          Started by user anonymous
          Building on master
          [workspace] $ cmd.exe /C '"ant.bat -Dvalue='' && exit %%ERRORLEVEL%%"'
          Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar
          Buildfile: build.xml
          
          build:
               [echo] Value: ''''
          
          BUILD SUCCESSFUL
          Total time: 0 seconds
          Finished: SUCCESS
          

          Anders Hansen added a comment - Defining a property without a value makes the Hudson build fail. If the test is run directly against Ant from a command prompt Ant reports: "Missing value for property value". Steps: 1) Change the Ant properties to: value= Hudson console output: Started by user anonymous Building on master [workspace] $ cmd.exe /C ' "ant.bat -Dvalue= && exit %%ERRORLEVEL%%" ' Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar Missing value for property value Finished: FAILURE Single quotes seems to escaped correctly in Hudson. Ant reports the same value in Hudson as when the the script is run from a command prompt. Hudson console output on single quotes: Started by user anonymous Building on master [workspace] $ cmd.exe /C ' "ant.bat -Dvalue=' ' && exit %%ERRORLEVEL%%" ' Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar Buildfile: build.xml build: [echo] Value: '''' BUILD SUCCESSFUL Total time: 0 seconds Finished: SUCCESS

          Alan Harder added a comment -

          yes, I see that too.. that's odd.
          "ant -Dfoo= mytest" works fine on unix..
          I'll see what I can do..

          Alan Harder added a comment - yes, I see that too.. that's odd. "ant -Dfoo= mytest" works fine on unix.. I'll see what I can do..

          Code changed in hudson
          User: : mindless
          Path:
          trunk/hudson/main/core/src/main/java/hudson/tasks/Ant.java
          trunk/hudson/main/core/src/main/java/hudson/util/ArgumentListBuilder.java
          trunk/hudson/main/war/resources/help/ant/ant-properties.html
          http://jenkins-ci.org/commit/33988
          Log:
          JENKINS-7204 fix for defining empty properties for ant build on windows.
          also added info about parameter references and double quotes in help file.

          SCM/JIRA link daemon added a comment - Code changed in hudson User: : mindless Path: trunk/hudson/main/core/src/main/java/hudson/tasks/Ant.java trunk/hudson/main/core/src/main/java/hudson/util/ArgumentListBuilder.java trunk/hudson/main/war/resources/help/ant/ant-properties.html http://jenkins-ci.org/commit/33988 Log: JENKINS-7204 fix for defining empty properties for ant build on windows. also added info about parameter references and double quotes in help file.

          Alan Harder added a comment -

          Please test with http://ci.hudson-labs.org/job/hudson_main_trunk/lastSuccessfulBuild/artifact/main/war/target/hudson.war and let me know if it works.. you should use
          name=
          instead of
          name=""

          Alan Harder added a comment - Please test with http://ci.hudson-labs.org/job/hudson_main_trunk/lastSuccessfulBuild/artifact/main/war/target/hudson.war and let me know if it works.. you should use name= instead of name=""

          dogfood added a comment -

          Integrated in hudson_main_trunk #196
          JENKINS-7204 fix for defining empty properties for ant build on windows.
          also added info about parameter references and double quotes in help file.

          mindless :
          Files :

          • /trunk/hudson/main/war/resources/help/ant/ant-properties.html
          • /trunk/hudson/main/core/src/main/java/hudson/tasks/Ant.java
          • /trunk/hudson/main/core/src/main/java/hudson/util/ArgumentListBuilder.java

          dogfood added a comment - Integrated in hudson_main_trunk #196 JENKINS-7204 fix for defining empty properties for ant build on windows. also added info about parameter references and double quotes in help file. mindless : Files : /trunk/hudson/main/war/resources/help/ant/ant-properties.html /trunk/hudson/main/core/src/main/java/hudson/tasks/Ant.java /trunk/hudson/main/core/src/main/java/hudson/util/ArgumentListBuilder.java

          Anders Hansen added a comment -

          Tested the hudson_main_trunk #196 build. It works perfectly.

          Setting value to:

          value=""
          

          Gives the output:

          [workspace] $ cmd.exe /C '"ant.bat "-Dvalue=""""" && exit %%ERRORLEVEL%%"'
          Buildfile: build.xml
          
          build:
               [echo] Value: '""'
          BUILD SUCCESSFUL
          

          Setting value to:

          value=
          

          Gives the output:

          [workspace] $ cmd.exe /C '"ant.bat -Dvalue="" && exit %%ERRORLEVEL%%"'
          Buildfile: build.xml
          
          build:
               [echo] Value: ''
          
          BUILD SUCCESSFUL
          

          Setting value to:

          value=''
          

          Gives the output:

          [workspace] $ cmd.exe /C '"ant.bat -Dvalue='' && exit %%ERRORLEVEL%%"'
          Buildfile: build.xml
          
          build:
               [echo] Value: ''''
          
          BUILD SUCCESSFUL
          

          Anders Hansen added a comment - Tested the hudson_main_trunk #196 build. It works perfectly. Setting value to: value="" Gives the output: [workspace] $ cmd.exe /C ' "ant.bat " -Dvalue= """"" && exit %%ERRORLEVEL%%" ' Buildfile: build.xml build: [echo] Value: '""' BUILD SUCCESSFUL Setting value to: value= Gives the output: [workspace] $ cmd.exe /C ' "ant.bat -Dvalue=" " && exit %%ERRORLEVEL%%" ' Buildfile: build.xml build: [echo] Value: '' BUILD SUCCESSFUL Setting value to: value='' Gives the output: [workspace] $ cmd.exe /C ' "ant.bat -Dvalue=' ' && exit %%ERRORLEVEL%%" ' Buildfile: build.xml build: [echo] Value: '''' BUILD SUCCESSFUL

          macosgrove added a comment - - edited

          This is not quite working for all parameters. I am using parameters in the job configuration, set as follows:

          [Choice] environment=sys-test
          [String] releaseTag=September_2010.9708
          [String] dbVersion=September_2010
          [String] dbOrigin=
          [String] comments=
          [String] datetime=
          [Choice] tester=

          This results in $ cmd.exe /C '"ant.bat -file build-trac.xml -Dtester="" -DdbOrigin= -DreleaseTag=September_2010.9708 -Denvironment=sys-test -Ddatetime="" -Dcomments= -DdbVersion=September_2010 -DdeployEnvironment=ci updateDeploymentHistory -verbose && exit %%ERRORLEVEL%%"'

          which fails because of the lack of quotes on dbOrigin and comments. I don't understand why these are treated differently from datetime, which is quoted correctly and works.

          I am using Windows XP SP3 for client and server, Hudson 1.374

          macosgrove added a comment - - edited This is not quite working for all parameters. I am using parameters in the job configuration, set as follows: [Choice] environment=sys-test [String] releaseTag=September_2010.9708 [String] dbVersion=September_2010 [String] dbOrigin= [String] comments= [String] datetime= [Choice] tester= This results in $ cmd.exe /C '"ant.bat -file build-trac.xml -Dtester="" -DdbOrigin= -DreleaseTag=September_2010.9708 -Denvironment=sys-test -Ddatetime="" -Dcomments= -DdbVersion=September_2010 -DdeployEnvironment=ci updateDeploymentHistory -verbose && exit %%ERRORLEVEL%%"' which fails because of the lack of quotes on dbOrigin and comments. I don't understand why these are treated differently from datetime, which is quoted correctly and works. I am using Windows XP SP3 for client and server, Hudson 1.374

          Another problem with Ant command line quoting - comma in a property value:
          name=foo,bar

          Kirill Evstigneev added a comment - Another problem with Ant command line quoting - comma in a property value: name=foo,bar

          Code changed in hudson
          User: : mindless
          Path:
          trunk/hudson/main/core/src/main/java/hudson/tasks/Ant.java
          trunk/www/changelog.html
          http://jenkins-ci.org/commit/34228
          Log:
          JENKINS-7204 update regexp to work for 2 consecutive empty properties

          SCM/JIRA link daemon added a comment - Code changed in hudson User: : mindless Path: trunk/hudson/main/core/src/main/java/hudson/tasks/Ant.java trunk/www/changelog.html http://jenkins-ci.org/commit/34228 Log: JENKINS-7204 update regexp to work for 2 consecutive empty properties

          dogfood added a comment -

          Integrated in hudson_main_trunk #234
          JENKINS-7204 update regexp to work for 2 consecutive empty properties

          mindless :
          Files :

          • /trunk/www/changelog.html
          • /trunk/hudson/main/core/src/main/java/hudson/tasks/Ant.java

          dogfood added a comment - Integrated in hudson_main_trunk #234 JENKINS-7204 update regexp to work for 2 consecutive empty properties mindless : Files : /trunk/www/changelog.html /trunk/hudson/main/core/src/main/java/hudson/tasks/Ant.java

            mindless Alan Harder
            amh Anders Hansen
            Votes:
            4 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: