簡體   English   中英

從自定義任務中調用Ant目標會導致“無法創建任務或類型導入”錯誤

[英]Calling Ant target from within custom task causes 'failed to create task or type import' error

我根據之前的一篇文章創建了一個自定義Ant任務,該任務在另一個xml文件中調用了一個現有目標。

就調用所需的構建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)

我的自定義Ant任務正在調用的build xml如下所示:

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

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

該錯誤表明問題與第4行和任務“導入”有關。 關於為什么螞蟻似乎不了解其自身任務之一的任何想法?

有趣的是,它似乎不起作用的原因是因為我的自定義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()而不是new Project(),問題就消失了:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM