blob: 0fbf533b7946020a9a15d07874c8dfd8be721a8d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.maven.apisupport;
import java.io.IOException;
import java.util.Arrays;
import org.netbeans.api.project.Project;
import org.netbeans.api.project.ProjectUtils;
import org.netbeans.modules.apisupport.project.spi.ExecProject;
import org.netbeans.modules.maven.api.NbMavenProject;
import org.netbeans.modules.maven.api.execute.RunConfig;
import org.netbeans.modules.maven.api.execute.RunUtils;
import static org.netbeans.modules.maven.apisupport.Bundle.*;
import org.netbeans.spi.project.ProjectServiceProvider;
import org.openide.filesystems.FileUtil;
import org.openide.util.NbBundle.Messages;
import org.openide.util.Task;
@ProjectServiceProvider(service=ExecProject.class, projectType="org-netbeans-modules-maven/" + NbMavenProject.TYPE_NBM)
public class MavenExecProject implements ExecProject {
private final Project p;
public MavenExecProject(Project p) {
this.p = p;
}
@Messages({"# {0} - project display name", "MavenExecProject_run=Run {0}"})
@Override public Task execute(String... args) throws IOException {
Project app = MavenNbModuleImpl.findAppProject(p);
if (app == null) {
NbMavenProject prj = p.getLookup().lookup(NbMavenProject.class);
throw new IOException("No open nbm-application project found to contain " + prj.getMavenProject().getId() + ". Please open the aplication project and try again.");
}
// XXX build w/ deps first? to do so, RP.post a Runnable which does both actions and calls result()
RunConfig cfg = RunUtils.createRunConfig(FileUtil.toFile(app.getProjectDirectory()), app,
// cf. platformActionMappings.xml
MavenExecProject_run(ProjectUtils.getInformation(app).getDisplayName()), Arrays.asList("install", "nbm:run-platform"));
StringBuilder argsS = new StringBuilder();
for (String arg : args) {
if (argsS.length() > 0) {
argsS.append(' ');
}
argsS.append(arg);
}
NbMavenProject appPrj = app.getLookup().lookup(NbMavenProject.class);
if (NetBeansRunParamsIDEChecker.usingNbmPlugin311(appPrj.getMavenProject())) {
cfg.setProperty(NetBeansRunParamsIDEChecker.PROPERTY, argsS.toString());
} else {
cfg.setProperty(NetBeansRunParamsIDEChecker.OLD_PROPERTY, argsS.toString());
}
return RunUtils.run(cfg);
}
}