in nbm-maven-plugin/src/main/java/org/apache/netbeans/nbm/RunNetBeansMojo.java [94:223]
public void execute() throws MojoExecutionException, MojoFailureException {
netbeansUserdir.mkdirs();
List<File> clusters = new ArrayList<>();
if (!clusterBuildDir.exists() || clusterBuildDir.listFiles() == null) {
throw new MojoExecutionException(
"No clusters to include in execution found. Please run the nbm:cluster or nbm:cluster-app goals before this one.");
}
File[] fls = clusterBuildDir.listFiles();
for (File fl : fls) {
if (fl.isDirectory()) {
clusters.add(fl);
}
}
StringBuilder buff = new StringBuilder();
for (File cluster : clusters) {
buff.append(cluster.getAbsolutePath());
buff.append(":");
}
if (buff.lastIndexOf(":") > -1) {
buff.deleteCharAt(buff.lastIndexOf(":"));
}
getLog().debug("cluster path:\n" + buff);
//now check what the exec names are to figure the right XXX.clusters name
File binDir = new File(netbeansInstallation, "bin");
File[] execs = binDir.listFiles();
String appName = null;
if (execs != null) {
for (File f : execs) {
String name = f.getName();
if (name.contains("_w.exe")) {
continue;
}
name = name.replaceFirst("(64)?([.]exe)?$", "");
if (!name.contains(".")) {
if (appName == null) {
appName = name;
} else {
if (!appName.equals(name)) {
getLog().debug("When examining executable names, found clashing results " + f.getName()
+ " " + appName);
}
}
}
}
}
if (appName == null) {
appName = "netbeans";
}
//https://bz.apache.org/netbeans/show_bug.cgi?id=174819
StringReader sr = new StringReader(appName + "_extraclusters=\"" + buff + "\"\n"
+ "extraclusters=\""
+ buff + "\"\n" + "extra_clusters=\"" + buff + "\"");
// write XXX.conf file with cluster information...
File etc = new File(netbeansUserdir, "etc");
etc.mkdirs();
File confFile = new File(etc, appName + ".conf");
try (FileOutputStream conf = new FileOutputStream(confFile)) {
IOUtil.copy(sr, conf);
} catch (IOException ex) {
throw new MojoExecutionException("Error writing " + confFile, ex);
}
if (getLog().isDebugEnabled()) {
try (InputStream io = new FileInputStream(confFile)) {
getLog().debug("Configuration file content:\n" + IOUtil.toString(io));
} catch (IOException ex) {
throw new MojoExecutionException("Error writing " + confFile, ex);
}
}
boolean windows = Os.isFamily("windows");
Commandline cmdLine = new Commandline();
File exec;
if (windows) {
exec = new File(netbeansInstallation, "bin\\nb.exe");
if (!exec.exists()) {
// in 6.7 and onward, there's no nb.exe file.
exec = new File(netbeansInstallation, "bin\\" + appName + ".exe");
String jdkHome = System.getenv("JAVA_HOME");
if (jdkHome != null) {
if (new File(jdkHome, "jre\\lib\\amd64\\jvm.cfg").exists()
|| new File(jdkHome, "bin\\windowsaccessbridge-64.dll").exists()) {
File exec64 = new File(netbeansInstallation, "bin\\" + appName + "64.exe");
if (exec64.isFile()) {
exec = exec64;
}
}
}
cmdLine.addArguments(new String[]{
"--console", "suppress"
});
}
} else {
exec = new File(netbeansInstallation, "bin/" + appName);
}
cmdLine.setExecutable(exec.getAbsolutePath());
try {
String[] args = new String[]{
//TODO --jdkhome
"--userdir",
netbeansUserdir.getAbsolutePath(),
"-J-Dnetbeans.logger.console=true",
"-J-ea",};
cmdLine.addArguments(args);
getLog().info("Additional arguments=" + additionalArguments);
cmdLine.addArguments(CommandLineUtils.translateCommandline(additionalArguments));
cmdLine.addArguments(CommandLineUtils.translateCommandline(getDebugAdditionalArguments()));
for (int i = 0; i < cmdLine.getArguments().length; i++) {
getLog().info(" " + cmdLine.getArguments()[i]);
}
getLog().info("Executing: " + cmdLine);
StreamConsumer out = new StreamConsumer() {
@Override
public void consumeLine(String line) {
getLog().info(line);
}
};
CommandLineUtils.executeCommandLine(cmdLine, out, out);
} catch (Exception e) {
throw new MojoExecutionException("Failed executing NetBeans", e);
}
}