mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-193487 maven - delegate artifact builds to maven goals
This commit is contained in:
+20
@@ -0,0 +1,20 @@
|
||||
// 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.
|
||||
package org.jetbrains.idea.maven.execution.build;
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.task.ProjectModelBuildTask;
|
||||
import com.intellij.task.ProjectTaskNotification;
|
||||
|
||||
/**
|
||||
* @author ibessonov
|
||||
*/
|
||||
public interface MavenArtifactBuilder {
|
||||
|
||||
ExtensionPointName<MavenArtifactBuilder> EP_NAME =
|
||||
ExtensionPointName.create("org.jetbrains.idea.maven.artifactBuilder");
|
||||
|
||||
boolean isApplicable(ProjectModelBuildTask task);
|
||||
|
||||
void build(Project project, ProjectModelBuildTask task, ProjectTaskNotification callback);
|
||||
}
|
||||
+47
-16
@@ -18,6 +18,7 @@ import com.intellij.openapi.progress.Task;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.packaging.artifacts.Artifact;
|
||||
import com.intellij.task.*;
|
||||
import com.intellij.task.impl.JpsProjectTaskRunner;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -57,14 +58,33 @@ public class MavenProjectTaskRunner extends ProjectTaskRunner {
|
||||
|
||||
buildModuleFiles(project, callback, getFromGroupedMap(taskMap, ModuleFilesBuildTask.class, emptyList()));
|
||||
buildModules(project, callback, getFromGroupedMap(taskMap, ModuleBuildTask.class, emptyList()));
|
||||
|
||||
buildArtifacts(project, callback, getFromGroupedMap(taskMap, ProjectModelBuildTask.class, emptyList()));
|
||||
}
|
||||
|
||||
public boolean canRun(@NotNull ProjectTask projectTask) {
|
||||
throw new UnsupportedOperationException("MavenProjectTaskRunner#canRun(ProjectTask)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRun(@NotNull ProjectTask projectTask) {
|
||||
public boolean canRun(@NotNull Project project, @NotNull ProjectTask projectTask) {
|
||||
if (!MavenRunner.getInstance(project).getSettings().isDelegateToMaven()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (projectTask instanceof ModuleBuildTask) {
|
||||
Module module = ((ModuleBuildTask)projectTask).getModule();
|
||||
if (isDelegatedToMaven(module)) {
|
||||
return isMavenModule(module);
|
||||
return isMavenModule(module);
|
||||
}
|
||||
|
||||
if (projectTask instanceof ProjectModelBuildTask) {
|
||||
ProjectModelBuildTask buildTask = (ProjectModelBuildTask)projectTask;
|
||||
if (buildTask.getBuildableElement() instanceof Artifact) {
|
||||
for (MavenArtifactBuilder artifactBuilder : MavenArtifactBuilder.EP_NAME.getExtensions()) {
|
||||
if (artifactBuilder.isApplicable(buildTask)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,14 +93,12 @@ public class MavenProjectTaskRunner extends ProjectTaskRunner {
|
||||
RunProfile runProfile = task.getRunProfile();
|
||||
if (runProfile instanceof ModuleBasedConfiguration) {
|
||||
RunConfigurationModule module = ((ModuleBasedConfiguration)runProfile).getConfigurationModule();
|
||||
if (isDelegatedToMaven(module.getModule())) {
|
||||
if (!isMavenModule(module.getModule())) {
|
||||
return false;
|
||||
}
|
||||
for (MavenExecutionEnvironmentProvider environmentProvider: MavenExecutionEnvironmentProvider.EP_NAME.getExtensions()) {
|
||||
if (environmentProvider.isApplicable(task)) {
|
||||
return true;
|
||||
}
|
||||
if (!isMavenModule(module.getModule())) {
|
||||
return false;
|
||||
}
|
||||
for (MavenExecutionEnvironmentProvider environmentProvider: MavenExecutionEnvironmentProvider.EP_NAME.getExtensions()) {
|
||||
if (environmentProvider.isApplicable(task)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -89,10 +107,6 @@ public class MavenProjectTaskRunner extends ProjectTaskRunner {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean isDelegatedToMaven(@Nullable Module module) {
|
||||
return module != null && MavenRunner.getInstance(module.getProject()).getSettings().isDelegateToMaven();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ExecutionEnvironment createExecutionEnvironment(@NotNull Project project,
|
||||
@@ -166,10 +180,15 @@ public class MavenProjectTaskRunner extends ProjectTaskRunner {
|
||||
explicitProfiles.getDisabledProfiles()));
|
||||
}
|
||||
|
||||
runBatch(project, mavenRunner, "Maven Build", commands, callback);
|
||||
}
|
||||
|
||||
public static void runBatch(@NotNull Project project, @NotNull MavenRunner mavenRunner, @NotNull String title,
|
||||
@NotNull List<MavenRunnerParameters> commands, @Nullable ProjectTaskNotification callback) {
|
||||
ApplicationManager.getApplication().invokeAndWait(() -> {
|
||||
AtomicInteger errors = new AtomicInteger();
|
||||
AtomicInteger warnings = new AtomicInteger();
|
||||
MavenConsole console = new MavenConsoleImpl("Maven Build", project) {
|
||||
MavenConsole console = new MavenConsoleImpl(title, project) {
|
||||
|
||||
@Override
|
||||
public void attachToProcess(ProcessHandler processHandler) {
|
||||
@@ -242,4 +261,16 @@ public class MavenProjectTaskRunner extends ProjectTaskRunner {
|
||||
@NotNull Collection<? extends ModuleFilesBuildTask> moduleFilesBuildTasks) {
|
||||
buildModules(project, callback, moduleFilesBuildTasks);
|
||||
}
|
||||
|
||||
private static void buildArtifacts(Project project, ProjectTaskNotification callback, List<? extends ProjectModelBuildTask> tasks) {
|
||||
for (ProjectModelBuildTask buildTask : tasks) {
|
||||
if (buildTask.getBuildableElement() instanceof Artifact) {
|
||||
for (MavenArtifactBuilder artifactBuilder : MavenArtifactBuilder.EP_NAME.getExtensions()) {
|
||||
if (artifactBuilder.isApplicable(buildTask)) {
|
||||
artifactBuilder.build(project, buildTask, callback);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
<extensionPoint name="repositoryProvider" interface="org.jetbrains.idea.maven.indices.MavenRepositoryProvider"/>
|
||||
<extensionPoint name="executionEnvironmentProvider" interface="org.jetbrains.idea.maven.execution.build.MavenExecutionEnvironmentProvider"/>
|
||||
<extensionPoint name="artifactBuilder" interface="org.jetbrains.idea.maven.execution.build.MavenArtifactBuilder"/>
|
||||
</extensionPoints>
|
||||
|
||||
<depends>com.intellij.properties</depends>
|
||||
|
||||
Reference in New Issue
Block a user