2013-05-27 3 views
0
나는 어떤 개미 도구 작업과 다음 오전

는 코드 블록 종료 :개미 프로그램

<trycatch> 
    <try> 
     <if> 
      <equals arg1="${project.dir}" arg2=""/> 
      <then> 
       <fail/> 
      </then> 
     </if> 
    </try> 
    <catch> 
     <echo> 
      &#xa;Project directory not found at the location: ${project.dir} 
      &#xa;Please set your valid project directory in ant configuration file located under path: build/config.properties 
      &#xa;-----------------------------|- Program Terminated -|----------------------------- 
     </echo> 
    </catch> 
</trycatch> 

나는 또한에 대한 경우 ant.contrib.jar을 사용하고, 다른 ... 등 기능

문제는 개미가 "project dir not found"라는 오류를 던져서 개미 프로그램이 잘 종료되는 것입니다.

BUILD FAILED 
D:\Build\build.xml:151: The following error occurred while executing this line: 
D:\Build\build.xml:255: Execute failed: java.io.IOException: Cannot run program "java" (in directory "D:\Build\publish"): CreateProcess error=206, The filename or extension is too long 
     at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
     at java.lang.Runtime.exec(Runtime.java:593) 
     at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:41) 
     at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:434) 
     at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:448) 
     at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:628) 
     at org.apache.tools.ant.taskdefs.ExecuteOn.runParallel(ExecuteOn.java:714) 
     at org.apache.tools.ant.taskdefs.ExecuteOn.runExec(ExecuteOn.java:477) 
     at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:495) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.Target.execute(Target.java:435) 
     at org.apache.tools.ant.Target.performTasks(Target.java:456) 
     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) 
     at org.apache.tools.ant.Project.executeTarget(Project.java:1364) 
     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
     at org.apache.tools.ant.Project.executeTargets(Project.java:1248) 
     at org.apache.tools.ant.Main.runBuild(Main.java:851) 
     at org.apache.tools.ant.Main.startAnt(Main.java:235) 
     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 
     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 
Caused by: java.io.IOException: CreateProcess error=206, The filename or extension is too long 
     at java.lang.ProcessImpl.create(Native Method) 
     at java.lang.ProcessImpl.<init>(ProcessImpl.java:81) 
     at java.lang.ProcessImpl.start(ProcessImpl.java:30) 
     at java.lang.ProcessBuilder.start(ProcessBuilder.java:453) 
     ... 38 more 

그래서 내가 어떻게 제거하거나이 빌드가 오류를 FAIL 제어 할 수 있지만, 나 또한 내 오류가 발생한 후 오류를 다음 보여줍니다?

+0

는 누락 물건을 대상 후 실행됩니다있을 것 같습니다. 타겟이 호출되는 위치와 타겟의 정의를 추가하십시오. –

+1

출력의 예외는'execute' 태스크에 의해 던져집니다. 즉, 위에 게시 한 코드 블록 내에서 발생하지 않습니다. 예외와 코드는 관련이 없습니다. 오류 메시지를 검색 할 수 있습니다. 파일 경로와 관련된 문제 인 것 같습니다. – coolcfan

+0

흠 ............ ok –

답변

2

<catch>의 경우 프로그램을 종료하고 싶으므로 마지막에 <throw/>을 추가해야합니다.

<?xml version="1.0" encoding="UTF-8"?> 
<project name="test" default="test" basedir="."> 
    <taskdef resource="net/sf/antcontrib/antcontrib.properties"> 
     <classpath> 
     <pathelement location="/usr/share/java/ant-contrib-1.0b3.jar"/> 
     </classpath> 
    </taskdef> 
    <target name="test"> 
     <trycatch> 
      <try> 
       <if> 
        <equals arg1="true" arg2="true"/> 
        <then> 
         <echo>HIT</echo> 
         <fail/> 
        </then> 
        <else> 
         <echo>NO HIT</echo> 
        </else> 
       </if> 
      </try> 
      <catch> 
       <echo> 
        &#xa;Project directory not found at the location: ${project.dir} 
        &#xa;Please set your valid project directory in ant configuration file located under path: build/config.properties 
        &#xa;-----------------------------|- Program Terminated -|----------------------------- 
       </echo> 
       <throw/> 
      </catch> 
     </trycatch> 
    <echo>AFTER ALL</echo> <!-- this shall not be called --> 
    </target> 
</project> 

는이 결과를 생성합니다

test: 
HIT 


Project directory not found at the location: ${project.dir} 

Please set your valid project directory in ant configuration file located under path: build/config.properties 

-----------------------------|- Program Terminated -|----------------------------- 

/home/mor/projekte/steamnet/DLH/test.xml:28: No message 
BUILD FAILED (total time: 0 seconds) 
+0

우수! 지금 일하고 .... 감사합니다. –