Вызов цели Ant из пользовательской задачи приводит к ошибке «не удалось создать задачу или ввести импорт» - PullRequest
0 голосов
/ 14 сентября 2010

Я создал пользовательскую задачу 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)

Сборочный xml, который вызывает моя пользовательская задача Ant, выглядит примерно так:* Ошибка говорит о том, что проблема связана со строкой 4 и задачей «импорт».Какие-нибудь идеи относительно того, почему Ant, кажется, не понимает одну из своих собственных задач?

1 Ответ

0 голосов
/ 14 сентября 2010

Интересно, похоже, причина того, что это не сработало, была в том, что моя пользовательская задача 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 () вместо нового 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...