Search code examples
antchecksum

Checksum task in Ant not working as expected


I am struggling with a small ant file/target that is as follows:

<project name="test" default="test" basedir=".">
  <property name="out.dir" value="${basedir}/out/"/>
  <property name="apidoc.path" value="${out.dir}test.zip"/>
  <property name="apidoc.input" value="${basedir}/../source//apidocs"/>
  <property name="apidoc.sha" value="TODO"/>

  <target name="test">
    <echo message="Starting target APIDOC"/>

    <zip destfile="${apidoc.path}" basedir="${apidoc.input}" update="no"/>

    <echo message="${apidoc.path}"/>

    <checksum file="${apidoc.path}" algorithm="SHA-256" property="apidoc.sha"/>

    <echo message="Hash wert ist ${apidoc.sha}"/>
  </target>

</project>

The target should create a zip file from a doc folder (it does) and then store the hash value of the zip file into a property for further use. However, the hash value is not stored in the property. I get the output as follow:

test:
     [echo] Starting target APIDOC
     [echo] /Users/user1/git/project/out/test.zip
     [echo] Hash wert ist TODO

BUILD SUCCESSFUL

Does anybody have and idea, what is going wrong here?


Solution

  • Properties in Ant are immutable. This line

    <property name="apidoc.sha" value="TODO"/>
    

    sets the value, and after that it can't be changed.

    If you run ant with the -v command-line option you should see a message like

    Override ignored for property "apidoc.sha"
    

    indicating that the attempt to alter the property value in the <checksum> task is being ignored.