Search in sources :

Example 1 with MavenConsoleAnnotator

use of hudson.tasks._maven.MavenConsoleAnnotator in project hudson-2.x by hudson.

the class Maven method perform.

@Override
public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws IOException, InterruptedException {
    VariableResolver<String> vr = build.getBuildVariableResolver();
    EnvVars env = build.getEnvironment(listener);
    String targets = Util.replaceMacro(this.targets, vr);
    targets = env.expand(targets);
    String pom = env.expand(this.pom);
    String properties = env.expand(this.properties);
    int startIndex = 0;
    int endIndex;
    do {
        // split targets into multiple invokations of maven separated by |
        endIndex = targets.indexOf('|', startIndex);
        if (-1 == endIndex) {
            endIndex = targets.length();
        }
        String normalizedTarget = targets.substring(startIndex, endIndex).replaceAll("[\t\r\n]+", " ");
        ArgumentListBuilder args = new ArgumentListBuilder();
        MavenInstallation mi = getMaven();
        if (mi == null) {
            String execName = build.getWorkspace().act(new DecideDefaultMavenCommand(normalizedTarget));
            args.add(execName);
        } else {
            mi = mi.forNode(Computer.currentComputer().getNode(), listener);
            mi = mi.forEnvironment(env);
            String exec = mi.getExecutable(launcher);
            if (exec == null) {
                listener.fatalError(Messages.Maven_NoExecutable(mi.getHome()));
                return false;
            }
            args.add(exec);
        }
        if (pom != null)
            args.add("-f", pom);
        Set<String> sensitiveVars = build.getSensitiveBuildVariables();
        args.addKeyValuePairs("-D", build.getBuildVariables(), sensitiveVars);
        args.addKeyValuePairsFromPropertyString("-D", properties, vr, sensitiveVars);
        if (usesPrivateRepository())
            args.add("-Dmaven.repo.local=" + build.getWorkspace().child(".repository"));
        args.addTokenized(normalizedTarget);
        wrapUpArguments(args, normalizedTarget, build, launcher, listener);
        buildEnvVars(env, mi);
        try {
            MavenConsoleAnnotator mca = new MavenConsoleAnnotator(listener.getLogger(), build.getCharset());
            int r = launcher.launch().cmds(args).envs(env).stdout(mca).pwd(build.getModuleRoot()).join();
            if (0 != r) {
                return false;
            }
        } catch (IOException e) {
            Util.displayIOException(e, listener);
            e.printStackTrace(listener.fatalError(Messages.Maven_ExecFailed()));
            return false;
        }
        startIndex = endIndex + 1;
    } while (startIndex < targets.length());
    return true;
}
Also used : EnvVars(hudson.EnvVars) MavenConsoleAnnotator(hudson.tasks._maven.MavenConsoleAnnotator) ArgumentListBuilder(hudson.util.ArgumentListBuilder) IOException(java.io.IOException)

Aggregations

EnvVars (hudson.EnvVars)1 MavenConsoleAnnotator (hudson.tasks._maven.MavenConsoleAnnotator)1 ArgumentListBuilder (hudson.util.ArgumentListBuilder)1 IOException (java.io.IOException)1