public void executeTargets()

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