public void progress(IvyEvent event) { Project project = (Project) IvyContext.peekInContextStack(IvyTask.ANT_PROJECT_CONTEXT_KEY); if (project == null) { Message.info("ant call trigger can only be used from an ant build. Ignoring."); return; } if (onlyonce && isTriggered(event)) { Message.verbose("call already triggered for this event, skipping: " + event); } else { CallTarget call = new CallTarget(); call.setProject(project); call.setTaskName("antcall"); Map attributes = event.getAttributes(); String target = IvyPatternHelper.substituteTokens(getTarget(), attributes); call.setTarget(target); for (Iterator iter = attributes.keySet().iterator(); iter.hasNext();) { String key = (String) iter.next(); String value = (String) attributes.get(key); Property p = call.createParam(); p.setName(prefix == null ? key : prefix + key); p.setValue(value == null ? "" : value); } Message.verbose("triggering ant call: target=" + target + " for " + event); call.execute(); markTriggered(event); Message.debug("triggered ant call finished: target=" + target + " for " + event); } }
/** * Call the selected ant task. */ private void antcall (String taskName) { CallTarget callee; callee = (CallTarget) getProject().createTask("antcall"); callee.setOwningTarget(getOwningTarget()); callee.setTaskName(getTaskName()); callee.setLocation(getLocation()); callee.init(); callee.setTarget(taskName); callee.execute(); }