<id>org.intellij.groovy.grape</id>
<name>Groovy Grape support</name>
<description>An intention on @Grab annotations to download the needed dependencies</description>
- <version>0.3</version>
+ <version>0.4</version>
<idea-version since-build="95.28" until-build="96.1"/>
<vendor logo="/org/jetbrains/plugins/groovy/images/groovy_16x16.png" url="http://www.jetbrains.com">JetBrains Inc.</vendor>
<depends>org.intellij.groovy</depends>
import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiFile;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.IncorrectOperationException;
final VirtualFile vfile = file.getOriginalFile().getVirtualFile();
assert vfile != null;
+ if (JavaPsiFacade.getInstance(project).findClass("org.apache.ivy.core.report.ResolveReport", file.getResolveScope()) == null) {
+ Messages.showErrorDialog("Sorry, but IDEA cannot @Grab the dependencies without Ivy. Please add Ivy to your module dependencies and re-run the action.", "Ivy missing");
+ return;
+ }
+
final JavaParameters javaParameters = GroovyScriptRunConfiguration.createJavaParametersWithSdk(module);
try {
//debug
processException(e, collector, forStubs);
}
catch (NoClassDefFoundError e) {
- addMessageWithoutLocation(collector, "Groovyc error: " + e.getMessage() + " class not found, try compiling it explicitly", !forStubs);
+ final String className = e.getMessage();
+ if (className.startsWith("org/apache/ivy/")) {
+ addMessageWithoutLocation(collector, "Cannot @Grab without Ivy, please add it to your module dependencies (NoClassDefFoundError: " + className + ")", true);
+ } else {
+ addMessageWithoutLocation(collector, "Groovyc error: " + className + " class not found, try compiling it explicitly", !forStubs);
+ }
+
}
finally {
addWarnings(unit.getErrorCollector(), collector);