2010-05-03 90 views
12

除了Ant任務運行在不同的構建文件這一事實之外,AntCall任務(描述here)和Ant任務(描述here)之間是否存在任何實質性區別?AntCall和Ant任務有什麼區別?

+1

這些差異都在您剛剛提到的鏈接中描述。 – skaffman 2010-05-03 11:48:16

回答

8

這實際上取決於你的意思是「實質性差異」。不同之處在於人們稱其爲另一個,所以基本上是一樣的,但在不同的環境中使用。

這裏是defaults.properties一個片段,它定義了標準的Ant任務:

ant=org.apache.tools.ant.taskdefs.Ant 
antcall=org.apache.tools.ant.taskdefs.CallTarget 
........... 

如果你打開這些任務的源代碼,你會看到CallTarget包含Ant對象和代表大部分的工作,以它:

public class CallTarget extends Task { 
    private Ant callee; 
    ........... 
    ........... 
    /** 
    * Delegate the work to the ant task instance, after setting it up. 
    * @throws BuildException on validation failure or if the target didn't 
    * execute. 
    */ 
    public void execute() throws BuildException { 
     if (callee == null) { 
      init(); 
     } 
     if (!targetSet) { 
      throw new BuildException(
       "Attribute target or at least one nested target is required.", 
       getLocation()); 
     } 
     callee.setAntfile(getProject().getProperty("ant.file")); 
     callee.setInheritAll(inheritAll); 
     callee.setInheritRefs(inheritRefs); 
     callee.execute(); 
    } 
    .......... 
    .......... 
}