diff --git a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinMavenConfigurator.java b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinMavenConfigurator.java
index bcefe02f93c..0bec5b0d0fa 100644
--- a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinMavenConfigurator.java
+++ b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinMavenConfigurator.java
@@ -53,6 +53,7 @@ public abstract class KotlinMavenConfigurator implements KotlinProjectConfigurat
public static final String NAME = "maven";
+ private static final String GROUP_ID = "org.jetbrains.kotlin";
private static final String MAVEN_PLUGIN_ID = "kotlin-maven-plugin";
private static final String KOTLIN_VERSION_PROPERTY = "kotlin.version";
private static final String SNAPSHOT_REPOSITORY_ID = "sonatype.oss.snapshots";
@@ -72,11 +73,41 @@ public abstract class KotlinMavenConfigurator implements KotlinProjectConfigurat
return true;
}
+ MavenDomProjectModel domProjectModel = getMavenDomProjectModel(module);
+ return hasKotlinMavenPlugin(domProjectModel) && hasDependencyOnLibrary(domProjectModel);
+ }
+
+ @NotNull
+ private static MavenDomProjectModel getMavenDomProjectModel(@NotNull Module module) {
PsiFile pomFile = findModulePomFile(module);
- if (pomFile == null) return false;
- String text = pomFile.getText();
- return text.contains("" + MAVEN_PLUGIN_ID + "") &&
- text.contains("" + getLibraryId() + "");
+ assert pomFile != null : "pom file should not be null";
+
+ VirtualFile virtualFile = pomFile.getVirtualFile();
+ assert virtualFile != null : "Virtual file should exists for psi file " + pomFile.getName();
+
+ MavenDomProjectModel domModel = MavenDomUtil.getMavenDomProjectModel(pomFile.getProject(), virtualFile);
+ assert domModel != null : "maven dom model should not be null";
+ return domModel;
+ }
+
+ private static boolean hasGivenCoordinates(@NotNull MavenDomShortArtifactCoordinates mavenDomElement, @NotNull String groupId, @NotNull String artifactId) {
+ return groupId.equals(mavenDomElement.getGroupId().getRawText()) && artifactId.equals(mavenDomElement.getArtifactId().getRawText());
+ }
+
+ private static boolean hasKotlinMavenPlugin(@NotNull MavenDomProjectModel domModel) {
+ for(MavenDomPlugin mavenDomPlugin : domModel.getBuild().getPlugins().getPlugins()) {
+ if (hasGivenCoordinates(mavenDomPlugin, GROUP_ID, MAVEN_PLUGIN_ID)) return true;
+ }
+
+ return false;
+ }
+
+ private boolean hasDependencyOnLibrary(@NotNull MavenDomProjectModel domModel) {
+ for(MavenDomDependency mavenDomDependency : domModel.getDependencies().getDependencies()) {
+ if (hasGivenCoordinates(mavenDomDependency, GROUP_ID, getLibraryId())) return true;
+ }
+
+ return false;
}
@Override
@@ -111,7 +142,7 @@ public abstract class KotlinMavenConfigurator implements KotlinProjectConfigurat
}
new WriteCommandAction(file.getProject()) {
@Override
- protected void run(Result result) {
+ protected void run(@NotNull Result result) {
addKotlinVersionPropertyIfNeeded(domModel, version);
if (isSnapshot(version)) {