2013-08-22 4 views
-1

Я зову одну цель (targetCalled) от какой-либо другой цели (targetCaller) следующим образом:как использовать статус EXEC выхода в муравьиной цели и другие цели также

<target depends="local.init" 
    description="creating application jar file of the classes dir" 
    name="run_check_server_client_jar_gen"> 

    <antcall target="run_check_server_client_jar_callExec"/> 
    <if> 
     <isset property="result"/> 
     <then> 
      <echo>Result: ${result}</echo> 
     </then> 
     <else> 
      <echo>Propert result is not set yet !! </echo> 
     </else> 
    </if> 
</target> 

Теперь я называю один Exec из targetCalled, как следующим образом:

<target depends="local.init" 
    description="Running check for all classes in 
      client jar should also be present in server jar" 
      name="run_check_server_client_jar_callExec"> 
    <exec executable="/bin/bash" resultproperty="${result}" failonerror="false"> 
     <arg value="count_client_server_inner_classes.sh"/> 
     <arg value="gjf1common_client_classes.jar"/> 
     <arg value="gjf1common_classes.jar"/> 
    </exec> 
    <if> 
     <isset property="result"/> 
     <then> 
      <echo>Inside::Result: ${result}</echo> 
     </then> 
     <else> 
      <echo>Inside::Property result is not set yet !!!! </echo> 
     </else> 
    </if> 
</target> 

В моем count_client_server_inner_classes.sh, я выход из статуса: выхода «$ результата» это дает мне «: числовой аргументу необходимый»

Я хочу, чтобы исполняемый файл возвращал мне строку, возможно ли это?

Я хочу использовать это возвращенное значение в моем targetCalled и targetCaller. , но когда я повторяю свойство результата .. он дает мне 255. Может кто-нибудь указать, где я иду не так?

ответ

0

Ant не является языком сценариев. Это не очень хороший способ описать сборку, но это ужасный язык сценариев. Попытка сценария в мураве с псевдо-функциональными вызовами, и если/else, как это, будет сосать. В общем, держитесь подальше от if/else - если вы найдете нужное вам, вы, вероятно, захотите переоценить выбор своего инструмента. Избегайте antcall любой ценой - он закручивает новый jvm и делает для некоторых сумасшедших спагетти - использование зависит от управления потоком выполнения между целями.

Чтобы ответить на один из ваших вопросов - свойство результата всегда будет кодом выхода, в случае с bash всегда должно быть int 0-255.

Интересная часть находится в сценарии bash ... опубликуйте это. Он возвращает 255, что является специальным кодом - означает, что он выходит за пределы диапазона. Я подозреваю, что у вас есть это, чтобы вернуть строку?

Вы могли бы упростить весь беспорядок, просто неудачу на ошибку:

<target name="run-check-server-client-jar-gen" depends="local-init" 
    description="creating application jar file of the classes dir"> 
    <exec executable="/bin/bash" failonerror="true"> 
     <arg value="count_client_server_inner_classes.sh"/> 
     <arg value="gjf1common_client_classes.jar"/> 
     <arg value="gjf1common_classes.jar"/> 
    </exec>  
</target> 

Если вы действительно должны дать пользовательский статус ошибки вы можете установить свойство результата, как вы где, а затем вы можете:

<target name="run-check-server-client-jar-gen" depends="local-init" 
    description="creating application jar file of the classes dir"> 
    <exec executable="/bin/bash" resultproperty="${return.code}"> 
     <arg value="count_client_server_inner_classes.sh"/> 
     <arg value="gjf1common_client_classes.jar"/> 
     <arg value="gjf1common_classes.jar"/> 
    </exec>  
    <fail message="crazy shell script madness terminated abnormally."> 
     <condition> 
      <isfailure code="${return.code}"/> 
     </condition> 
    </fail> 
</target> 

Я признаю, что на самом деле я не использовал приведенные выше фрагменты, вам, возможно, придется немного помассировать, но я уверен, что они уйдут. другая редакционная заметка о стиле: цели обычно используют -, а не _ или ., чтобы разграничить слово, где используются свойства .

 Смежные вопросы

  • Нет связанных вопросов^_^