Ben Harris
Ben Harris

Reputation: 1793

Ant 'fail unless' failing even though property exists

I have an Ant script that is failing where it shouldn't.

properties file:

application.foo.name=foo
application.foo.path=[path-to-foo]
application.foo.file=foo.jar
appName=

code:

<target name="deploy_app" description="Deploys app">
  <condition property="appSelected">
    <and>
      <not>
        <equals arg1="${appName}" arg2="" />
      </not>
      <isset property="${appName}" />
    </and>
  </condition>

  <if>
    <equals arg1="${appSelected}" arg2="true" />
   <then>
    <!-- do nothing! -->
   </then>
   <else>
    <input
      message="Please enter application name:"
      addproperty="newAppName"
    />
    <var name="appName" value="${newAppName}" />
  </else>
</if>
  <antcall inheritAll="true" target="deploy" />
</target>

<target name="deploy">
    <echo message="Deploying from property: application.${appName}.file" />
  <propertycopy silent="true" name="appFile" from="application.${appName}.file" />
  <propertycopy silent="true" name="appPath" from="application.${appName}.path" />
  <echo message="appFile: ${appFile}" />
  <fail unless="${appFile}" message="appfile: ${appFile} No application with the name ${appName} is defined in your properties file." />
</target>

output:

 [echo] Deploying from property: application.foo.file
 [echo] appFile: foo.jar
ERROR: The following error occurred while executing this line:
appfile: foo.jar No application with the name foo is defined in your properties file.

It's even printing out the value of the property, but thinks it doesn't exist!

Any reason why?

Upvotes: 0

Views: 2055

Answers (1)

Ben Harris
Ben Harris

Reputation: 1793

the unless parameter for the <fail> command takes a property name, not a property value!

fixed version:

<fail unless="appFile" message="No application with the name ${appName} is defined in your properties file." />

Upvotes: 3

Related Questions