Я следую документации Apache Ant для " Написание собственной задачи ", но я не могу заставить ее работать с интерфейсом, отличным от Condition
:
In CustomTask.java :
public final class CustomTask extends Task {
public void add(final Type type) {
log("Got: " + type + " with value: " + type.getValue());
}
@Override
public void execute() {
log("Executing custom task...");
}
}
В Тип.java :
public interface Type {
String getValue();
void setValue(final String value);
}
В DefaultType.java :
public class DefaultType implements Type {
private String value;
@Override
public String getValue() {
return value;
}
@Override
public void setValue(final String value) {
this.value = value;
}
}
И в build.xml , где я хочу их использовать:
<taskdef name="custom-task" classname="CustomTask" classpathref="run_classpath" />
<typedef name="default-type" classname="DefaultType" classpathref="run_classpath" />
<target name="custom">
<custom-task>
<default-type value="Hello world!" />
</custom-task>
</target>
Но я получаю следующую ошибку:
.../build.xml:37: custom-task doesn't support the nested "default-type" element.
Сумасшедшая вещь здесь, если я заставлю DefaultType
реализовать интерфейс org.apache.tools.ant.taskdefs.condition.Condition
(как в примере из документации) и добавить к классу CustomTask
следующий метод:
public void add(final Condition condition) {
log("Got: " + condition);
}
Это работает: (!?!?!)
custom:
[custom-task] Got: DefaultType@5a39699c
[custom-task] Executing custom task...
Я не понимаю, что особенного в интерфейсе org.apache.tools.ant.taskdefs.condition.Condition
, что он работает только с ним?
Спасибо запомощь.