in src/main/java/org/apache/easyant/core/ant/MetaBuildExecutor.java [42:97]
public void executeTargets(Project project, String[] targets) throws BuildException {
ProjectUtils.installMultiModuleLogger(project);
if (project.getReference("build-path") == null) {
throw new BuildException("build-path is required to use MetaBuildExecutor");
}
// hook for pre-module-targets
String preModuleTargets = project.getProperty(EasyAntMagicNames.PRE_MODULE_TARGETS);
if (preModuleTargets == null) {
preModuleTargets = EasyAntConstants.DEFAULT_PRE_MODULE_TARGETS;
}
List<String> postTargetsToRun = new ArrayList<String>();
List<String> preTargetsToRun = new ArrayList<String>();
List<String> preModuleTargetList = Arrays.asList(preModuleTargets.split(","));
for (String target : targets) {
if (preModuleTargetList.contains(target)) {
// fill a list of targets to run BEFORE subproject delegation
preTargetsToRun.add(target);
} else {
// fill a list of target to run AFTER subproject delagation
// make sure target exists
if (project.getTargets().get(target) != null) {
postTargetsToRun.add(target);
} else {
project.log("Skipping undefined target '" + target + "'", Project.MSG_VERBOSE);
}
}
}
// now call the default executor to include any extra
// targets defined in the root module.ant
super.executeTargets(project, preTargetsToRun.toArray(new String[preTargetsToRun.size()]));
printSubBuildsInOrder(project);
// delegate to the ea:submodule task to execute the list of targets on
// all modules in the build list
SubModule subModule = new SubModule();
subModule.setTaskName("meta:submodule");
subModule.setProject(project);
Boolean useBuildRepository = project.getProperty(EasyAntMagicNames.USE_BUILD_REPOSITORY) != null ? Boolean
.parseBoolean(project.getProperty(EasyAntMagicNames.USE_BUILD_REPOSITORY)) : true;
subModule.setUseBuildRepository(useBuildRepository);
subModule.setBuildpathRef(new Reference(project, "build-path"));
subModule.setTargets(new TargetList(targets));
subModule.execute();
// now call the default executor to include any extra targets defined in
// the root module.ant
super.executeTargets(project, postTargetsToRun.toArray(new String[postTargetsToRun.size()]));
}