mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Gradle: detect Scala plugin presence dynamically (to avoid cyclical plugin dependency)
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
<idea-plugin>
|
||||
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
||||
<projectResolve implementation="org.jetbrains.plugins.gradle.integrations.scala.ScalaGradleProjectResolverExtension"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
@@ -41,7 +41,6 @@
|
||||
<depends>org.intellij.groovy</depends>
|
||||
<depends optional="true" config-file="gradle-javaee-plugin.xml">com.intellij.javaee</depends>
|
||||
<depends optional="true" config-file="gradle-maven-integration.xml">org.jetbrains.idea.maven</depends>
|
||||
<depends optional="true" config-file="gradle-scala-integration.xml">org.intellij.scala</depends>
|
||||
|
||||
<extensionPoints>
|
||||
<extensionPoint name="projectResolve" interface="org.jetbrains.plugins.gradle.service.project.GradleProjectResolverExtension"/>
|
||||
@@ -63,6 +62,7 @@
|
||||
<resolve.contributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleSourceSetsContributor"/>
|
||||
<resolve.contributor implementation="org.jetbrains.plugins.gradle.service.resolve.GradleImplicitContributor"/>
|
||||
<projectResolve implementation="org.jetbrains.plugins.gradle.service.project.BaseGradleProjectResolverExtension"/>
|
||||
<projectResolve implementation="org.jetbrains.plugins.gradle.integrations.scala.ScalaGradleProjectResolverExtension"/>
|
||||
</extensions>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
|
||||
+6
-1
@@ -31,6 +31,7 @@ import org.jetbrains.plugins.gradle.model.data.ScalaCompileOptionsData;
|
||||
import org.jetbrains.plugins.gradle.model.data.ScalaModelData;
|
||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension;
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants;
|
||||
import org.jetbrains.plugins.gradle.util.GradleUtil;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
@@ -43,8 +44,12 @@ import java.util.Set;
|
||||
public class ScalaGradleProjectResolverExtension extends AbstractProjectResolverExtension {
|
||||
private static final Logger LOG = Logger.getInstance(ScalaGradleProjectResolverExtension.class);
|
||||
|
||||
private static final boolean scalaPluginPresent = GradleUtil.isPluginPresent("org.intellij.scala");
|
||||
|
||||
@Override
|
||||
public void populateModuleExtraModels(@NotNull IdeaModule gradleModule, @NotNull DataNode<ModuleData> ideModule) {
|
||||
if (!scalaPluginPresent) return;
|
||||
|
||||
ScalaModel scalaModel = resolverCtx.getExtraProject(gradleModule, ScalaModel.class);
|
||||
if (scalaModel != null) {
|
||||
ScalaModelData scalaModelData = create(scalaModel);
|
||||
@@ -57,7 +62,7 @@ public class ScalaGradleProjectResolverExtension extends AbstractProjectResolver
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<Class> getExtraProjectModelClasses() {
|
||||
return Collections.<Class>singleton(ScalaModel.class);
|
||||
return scalaPluginPresent ? Collections.<Class>singleton(ScalaModel.class) : Collections.<Class>emptySet();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package org.jetbrains.plugins.gradle.util;
|
||||
|
||||
import com.intellij.ide.actions.OpenProjectFileChooserDescriptor;
|
||||
import com.intellij.ide.plugins.IdeaPluginDescriptor;
|
||||
import com.intellij.ide.plugins.PluginManager;
|
||||
import com.intellij.ide.plugins.PluginManagerCore;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.extensions.PluginId;
|
||||
import com.intellij.openapi.externalSystem.model.ExternalSystemException;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants;
|
||||
@@ -243,4 +247,12 @@ public class GradleUtil {
|
||||
public static String createJvmArg(@NotNull String name, @NotNull String value) {
|
||||
return String.format(JVM_ARG_FORMAT, name, value);
|
||||
}
|
||||
|
||||
public static boolean isPluginPresent(@NotNull String id) {
|
||||
PluginId pluginId = PluginId.getRegisteredIds().get(id);
|
||||
if (pluginId == null) return false;
|
||||
IdeaPluginDescriptor pluginDescriptor = PluginManager.getPlugin(pluginId);
|
||||
if (pluginDescriptor == null) return false;
|
||||
return !PluginManagerCore.shouldSkipPlugin(pluginDescriptor);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user