public static void addJavaHome(@NotNull JavaParameters params, @NotNull Module module) { final Sdk sdk = ModuleUtilCore.getSdk(module, JavaModuleExtensionImpl.class); if (sdk != null && sdk.getSdkType() instanceof JavaSdkType) { String path = StringUtil.trimEnd(sdk.getHomePath(), File.separator); if (StringUtil.isNotEmpty(path)) { Map<String, String> env = params.getEnv(); if (env == null) { env = new HashMap<String, String>(); params.setEnv(env); } env.put("JAVA_HOME", FileUtil.toSystemDependentName(path)); } } }
@Override public JavaParameters createJavaParameters( @NotNull Module module, boolean forCreation, boolean forTests, boolean classpathFromDependencies, @Nullable String jvmParams, @NotNull MvcCommand command) throws ExecutionException { JavaParameters params = new JavaParameters(); Sdk sdk = ModuleRootManager.getInstance(module).getSdk(); params.setJdk(sdk); final VirtualFile sdkRoot = getSdkRoot(module); if (sdkRoot == null) { return params; } Map<String, String> env = params.getEnv(); if (env == null) { env = new HashMap<String, String>(); params.setEnv(env); } env.put(getSdkHomePropertyName(), FileUtil.toSystemDependentName(sdkRoot.getPath())); final VirtualFile lib = sdkRoot.findChild("lib"); if (lib != null) { for (final VirtualFile child : lib.getChildren()) { final String name = child.getName(); if (name.startsWith("groovy-all-") && name.endsWith(".jar")) { params.getClassPath().add(child); } } } final VirtualFile dist = sdkRoot.findChild("dist"); if (dist != null) { for (final VirtualFile child : dist.getChildren()) { final String name = child.getName(); if (name.endsWith(".jar")) { if (name.startsWith("griffon-cli-") || name.startsWith("griffon-rt-") || name.startsWith("griffon-resources-")) { params.getClassPath().add(child); } } } } ///////////////////////////////////////////////////////////// params.setMainClass("org.codehaus.griffon.cli.support.GriffonStarter"); final VirtualFile rootFile; if (forCreation) { VirtualFile[] roots = ModuleRootManager.getInstance(module).getContentRoots(); if (roots.length != 1) { throw new ExecutionException( "Failed to initialize griffon module: module " + module.getName() + " contains more than one root"); } command.getArgs().add(0, roots[0].getName()); rootFile = roots[0].getParent(); } else { rootFile = findAppRoot(module); if (rootFile == null) { throw new ExecutionException( "Failed to run griffon command: module " + module.getName() + " is not a Griffon module"); } } String workDir = VfsUtilCore.virtualToIoFile(rootFile).getAbsolutePath(); if (jvmParams != null) { params.getVMParametersList().addParametersString(jvmParams); } if (!params.getVMParametersList().getParametersString().contains(XMX_JVM_PARAMETER)) { params.getVMParametersList().add("-Xmx256M"); } final String griffonHomePath = FileUtil.toSystemDependentName(sdkRoot.getPath()); params.getVMParametersList().add("-Dgriffon.home=" + griffonHomePath); params.getVMParametersList().add("-Dbase.dir=" + workDir); assert sdk != null; params .getVMParametersList() .add("-Dtools.jar=" + ((JavaSdkType) sdk.getSdkType()).getToolsPath(sdk)); final String confpath = griffonHomePath + GROOVY_STARTER_CONF; params.getVMParametersList().add("-Dgroovy.starter.conf=" + confpath); params .getVMParametersList() .add( "-Dgroovy.sanitized.stacktraces=\"groovy., org.codehaus.groovy., java., javax., sun., gjdk.groovy., gant., org.codehaus.gant.\""); params.getProgramParametersList().add("--main"); params.getProgramParametersList().add("org.codehaus.griffon.cli.GriffonScriptRunner"); params.getProgramParametersList().add("--conf"); params.getProgramParametersList().add(confpath); if (!forCreation && classpathFromDependencies) { final String path = getApplicationClassPath(module).getPathsString(); if (StringUtil.isNotEmpty(path)) { params.getProgramParametersList().add("--classpath"); params.getProgramParametersList().add(path); } } params.setWorkingDirectory(workDir); ParametersList paramList = new ParametersList(); command.addToParametersList(paramList); params.getProgramParametersList().add(paramList.getParametersString()); params.setDefaultCharset(module.getProject()); return params; }