diff --git a/java/compiler/impl/intellij.java.compiler.impl.iml b/java/compiler/impl/intellij.java.compiler.impl.iml
index ddc9b9511761..80627eb1dc14 100644
--- a/java/compiler/impl/intellij.java.compiler.impl.iml
+++ b/java/compiler/impl/intellij.java.compiler.impl.iml
@@ -30,6 +30,7 @@
+
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/settings/ArtifactsImporter.kt b/java/compiler/impl/src/com/intellij/openapi/externalSystem/service/project/settings/ArtifactsImporter.kt
similarity index 97%
rename from platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/settings/ArtifactsImporter.kt
rename to java/compiler/impl/src/com/intellij/openapi/externalSystem/service/project/settings/ArtifactsImporter.kt
index e61db3b3c4c4..9a744391d4d8 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/settings/ArtifactsImporter.kt
+++ b/java/compiler/impl/src/com/intellij/openapi/externalSystem/service/project/settings/ArtifactsImporter.kt
@@ -1,10 +1,11 @@
-// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.openapi.externalSystem.service.project.settings
import com.intellij.execution.BeforeRunTask
import com.intellij.execution.BeforeRunTaskProvider
import com.intellij.execution.configurations.RunConfiguration
import com.intellij.openapi.externalSystem.model.project.settings.ConfigurationData
+import com.intellij.openapi.externalSystem.project.ModifiableArtifactsProvider
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
@@ -24,6 +25,7 @@ import com.intellij.util.ObjectUtils.consumeIfCast
class ArtifactsImporter: ConfigurationHandler {
override fun apply(project: Project, modelsProvider: IdeModifiableModelsProvider, configuration: ConfigurationData) {
+ if (modelsProvider !is ModifiableArtifactsProvider) return
val artifacts = configuration.find("ideArtifacts") as? List<*> ?: return
if (artifacts.isEmpty()) {
diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/ArtifactExternalDependenciesImporter.java b/java/compiler/openapi/src/com/intellij/openapi/externalSystem/project/ArtifactExternalDependenciesImporter.java
similarity index 55%
rename from platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/ArtifactExternalDependenciesImporter.java
rename to java/compiler/openapi/src/com/intellij/openapi/externalSystem/project/ArtifactExternalDependenciesImporter.java
index b9398bd2c4f1..a45b781a9575 100644
--- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/ArtifactExternalDependenciesImporter.java
+++ b/java/compiler/openapi/src/com/intellij/openapi/externalSystem/project/ArtifactExternalDependenciesImporter.java
@@ -1,19 +1,5 @@
-/*
- * Copyright 2000-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.intellij.openapi.externalSystem.service.project;
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.openapi.externalSystem.project;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.artifacts.ModifiableArtifactModel;
diff --git a/java/compiler/openapi/src/com/intellij/openapi/externalSystem/project/ModifiableArtifactsProvider.java b/java/compiler/openapi/src/com/intellij/openapi/externalSystem/project/ModifiableArtifactsProvider.java
new file mode 100644
index 000000000000..49f402eac2eb
--- /dev/null
+++ b/java/compiler/openapi/src/com/intellij/openapi/externalSystem/project/ModifiableArtifactsProvider.java
@@ -0,0 +1,16 @@
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.openapi.externalSystem.project;
+
+import com.intellij.packaging.artifacts.ModifiableArtifactModel;
+import com.intellij.packaging.elements.PackagingElementResolvingContext;
+import org.jetbrains.annotations.NotNull;
+
+public interface ModifiableArtifactsProvider {
+ @NotNull
+ ModifiableArtifactModel getModifiableArtifactModel();
+
+ @NotNull
+ PackagingElementResolvingContext getPackagingElementResolvingContext();
+
+ ArtifactExternalDependenciesImporter getArtifactExternalDependenciesImporter();
+}
diff --git a/java/java-impl/src/META-INF/JavaPlugin.xml b/java/java-impl/src/META-INF/JavaPlugin.xml
index c8fcfeac2922..a03ef92de58d 100644
--- a/java/java-impl/src/META-INF/JavaPlugin.xml
+++ b/java/java-impl/src/META-INF/JavaPlugin.xml
@@ -547,6 +547,7 @@
+
diff --git a/platform/external-system-api/intellij.platform.externalSystem.iml b/platform/external-system-api/intellij.platform.externalSystem.iml
index 7e660b13b7d0..2df69ddb777f 100644
--- a/platform/external-system-api/intellij.platform.externalSystem.iml
+++ b/platform/external-system-api/intellij.platform.externalSystem.iml
@@ -13,7 +13,6 @@
-
diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/IdeModifiableModelsProvider.java b/platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/IdeModifiableModelsProvider.java
index 813c0c7d8ac0..dcc21781d278 100644
--- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/IdeModifiableModelsProvider.java
+++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/IdeModifiableModelsProvider.java
@@ -28,8 +28,6 @@ import com.intellij.openapi.roots.ProjectModelExternalSource;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryTable;
import com.intellij.openapi.util.UserDataHolder;
-import com.intellij.packaging.artifacts.ModifiableArtifactModel;
-import com.intellij.packaging.elements.PackagingElementResolvingContext;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -59,9 +57,6 @@ public interface IdeModifiableModelsProvider extends IdeModelsProvider, UserData
Library.ModifiableModel getModifiableLibraryModel(Library library);
- @NotNull
- ModifiableArtifactModel getModifiableArtifactModel();
-
Library createLibrary(String name);
Library createLibrary(String name, @Nullable ProjectModelExternalSource externalSource);
@@ -70,10 +65,6 @@ public interface IdeModifiableModelsProvider extends IdeModelsProvider, UserData
ModalityState getModalityStateForQuestionDialogs();
- ArtifactExternalDependenciesImporter getArtifactExternalDependenciesImporter();
-
- PackagingElementResolvingContext getPackagingElementResolvingContext();
-
void commit();
void dispose();
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/AbstractIdeModifiableModelsProvider.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/AbstractIdeModifiableModelsProvider.java
index 47b18fe892c9..42ca3b78cc34 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/AbstractIdeModifiableModelsProvider.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/AbstractIdeModifiableModelsProvider.java
@@ -18,6 +18,8 @@ import com.intellij.openapi.externalSystem.model.ProjectKeys;
import com.intellij.openapi.externalSystem.model.project.LibraryData;
import com.intellij.openapi.externalSystem.model.project.ModuleData;
import com.intellij.openapi.externalSystem.model.project.ProjectCoordinate;
+import com.intellij.openapi.externalSystem.project.ArtifactExternalDependenciesImporter;
+import com.intellij.openapi.externalSystem.project.ModifiableArtifactsProvider;
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.module.Module;
@@ -59,7 +61,8 @@ import java.util.*;
import static com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.isRelated;
import static com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.toCanonicalPath;
-public abstract class AbstractIdeModifiableModelsProvider extends IdeModelsProviderImpl implements IdeModifiableModelsProvider {
+public abstract class AbstractIdeModifiableModelsProvider extends IdeModelsProviderImpl implements IdeModifiableModelsProvider,
+ ModifiableArtifactsProvider {
private static final Logger LOG = Logger.getInstance(AbstractIdeModifiableModelsProvider.class);
private ModifiableModuleModel myModifiableModuleModel;
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/ArtifactExternalDependenciesImporterImpl.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/ArtifactExternalDependenciesImporterImpl.java
index c8cf293aca88..7fbfbcc56734 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/ArtifactExternalDependenciesImporterImpl.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/ArtifactExternalDependenciesImporterImpl.java
@@ -15,6 +15,7 @@
*/
package com.intellij.openapi.externalSystem.service.project;
+import com.intellij.openapi.externalSystem.project.ArtifactExternalDependenciesImporter;
import com.intellij.openapi.roots.ui.configuration.artifacts.ManifestFilesInfo;
import com.intellij.openapi.util.Pair;
import com.intellij.packaging.artifacts.Artifact;
diff --git a/platform/platform-resources/src/META-INF/ExternalSystemExtensions.xml b/platform/platform-resources/src/META-INF/ExternalSystemExtensions.xml
index 2729a2a8d2a2..51087ce05c9b 100644
--- a/platform/platform-resources/src/META-INF/ExternalSystemExtensions.xml
+++ b/platform/platform-resources/src/META-INF/ExternalSystemExtensions.xml
@@ -58,7 +58,6 @@
-