2010-09-14 85 views
0

我已經創建了一個自定義Ant任務,按照我之前的posts之一調用另一個xml文件中的現有目標。從自定義任務中調用Ant目標會導致「無法創建任務或導入類型」錯誤

它似乎是在做什麼,我想呼籲,我想構建XML方面,但是,它現在拋出一個非常奇怪的錯誤:

build.xml:4: Problem: failed to create task or type import 
Cause: The name is undefined. 
Action: Check the spelling. 
Action: Check that any custom tasks/types have been declared. 
Action: Check that any <presetdef>/<macrodef> declarations have taken place. 
    at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:508) 
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:369) 
    at org.hardhat.task.HardHatTask.executeHardHat(HardHatTask.java:47) 
    at org.hardhat.task.HardHatTask.execute(HardHatTask.java:23) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor1.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) 

構建XML是我的自定義Ant任務調用看起來是這樣的:

<project name="myproject" default="all" basedir="."> 
    <import file="includes.xml"/> 

    <target name="all" depends="doStuff" /> 
</project> 

錯誤表示,問題與4號線和任務「進口」的事情。關於爲什麼Ant似乎不瞭解自己的任務之一的任何想法?

回答

0

有趣的是,它看起來像它爲什麼不工作是因爲我的自定義Ant任務看起來是這樣的原因:)

public void execute() { 
    Ant ant = new Ant(); 
    Project project = new Project(); 
    project.setProperty("...", ...); 
    ant.setProject(project); 
    File directory = new File("..."); 
    ant.setDir(directory); 
    ant.setAntfile("build.xml"); 
    ant.setTarget("all"); 
    ant.execute(); 
} 

我所要做的就是調用getProject(而不是新的項目()並且問題消失了:

public void execute() { 
    Ant ant = new Ant(); 
    Project project = getProject(); 
    project.setProperty("...", ...); 
    ant.setProject(project); 
    File directory = new File("..."); 
    ant.setDir(directory); 
    ant.setAntfile("build.xml"); 
    ant.setTarget("all"); 
    ant.execute(); 
} 
相關問題