From 10c9ff95fcd89821c3d15a12cd4aed2d5d3ceb20 Mon Sep 17 00:00:00 2001 From: "Anton.Makeev" Date: Tue, 22 Dec 2009 12:11:12 +0300 Subject: [PATCH] Maven: auto downloading of sources and javadoc + parallel downloading --- .../idea/maven/embedder/MavenEmbedderWrapper.java | 36 ++++++-- .../maven/importing/MavenRootModelAdapter.java | 8 +- .../maven/project/MavenArtifactDownloader.java | 101 +++++++++++++-------- .../maven/project/MavenImportingConfigurable.java | 1 - .../idea/maven/project/MavenImportingSettings.java | 28 +++++- .../maven/project/MavenImportingSettingsForm.form | 43 ++++++++- .../maven/project/MavenImportingSettingsForm.java | 18 +++- .../idea/maven/project/MavenProjectsManager.java | 14 ++- ...nProjectsProcessorArtifactsDownloadingTask.java | 11 ++- .../idea/maven/project/MavenProjectsTree.java | 11 +-- .../jetbrains/idea/maven/utils/MavenConstants.java | 4 +- .../src/main/resources/ProjectBundle.properties | 1 - 12 files changed, 199 insertions(+), 77 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/embedder/MavenEmbedderWrapper.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/embedder/MavenEmbedderWrapper.java index 5fd9657dcd..869e7cdc9b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/embedder/MavenEmbedderWrapper.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/embedder/MavenEmbedderWrapper.java @@ -51,13 +51,12 @@ import org.apache.maven.monitor.event.EventDispatcher; import org.apache.maven.plugin.PluginManager; import org.apache.maven.profiles.DefaultProfileManager; import org.apache.maven.profiles.ProfileManager; -import org.apache.maven.project.MavenProject; import org.apache.maven.project.*; +import org.apache.maven.project.MavenProject; import org.apache.maven.project.artifact.ProjectArtifactFactory; import org.apache.maven.project.interpolation.AbstractStringBasedModelInterpolator; import org.apache.maven.project.interpolation.ModelInterpolationException; import org.apache.maven.project.interpolation.ModelInterpolator; -import org.apache.maven.project.interpolation.StringSearchModelInterpolator; import org.apache.maven.project.path.DefaultPathTranslator; import org.apache.maven.project.path.PathTranslator; import org.apache.maven.settings.Mirror; @@ -72,6 +71,7 @@ import org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; import org.codehaus.plexus.util.xml.Xpp3Dom; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.*; import org.jetbrains.idea.maven.utils.MavenLog; import org.jetbrains.idea.maven.utils.MavenProcessCanceledException; @@ -292,6 +292,30 @@ public class MavenEmbedderWrapper { }); } + public Artifact resolve(@NotNull final MavenId id, + @NotNull final String type, + @Nullable final String classifier, + @NotNull final List remoteRepositories) + throws MavenProcessCanceledException { + return doExecute(new Executor() { + public Artifact execute() throws Exception { + Artifact artifact = getComponent(ArtifactFactory.class).createArtifactWithClassifier(id.getGroupId(), + id.getArtifactId(), + id.getVersion(), + type, + classifier); + try { + getComponent(ArtifactResolver.class).resolve(artifact, convertRepositories(remoteRepositories), myLocalRepository); + return artifact; + } + catch (Exception e) { + MavenLog.LOG.info(e); + } + return artifact; + } + }); + } + private List convertRepositories(List repositories) { List result = new ArrayList(); for (MavenRemoteRepository each : repositories) { @@ -326,14 +350,6 @@ public class MavenEmbedderWrapper { }); } - public Artifact createArtifact(String groupId, String artifactId, String version, String type, String classifier) { - return getComponent(ArtifactFactory.class).createArtifactWithClassifier(groupId, - artifactId, - version, - type, - classifier); - } - @NotNull public MavenExecutionResult execute(@NotNull final VirtualFile file, @NotNull final Collection activeProfiles, diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java index c29ee7211d..6b2db90818 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java @@ -226,8 +226,8 @@ public class MavenRootModelAdapter { Library.ModifiableModel libraryModel = provider.getLibraryModel(library); setUrl(libraryModel, OrderRootType.CLASSES, artifact, null); - setUrl(libraryModel, OrderRootType.SOURCES, artifact, MavenConstants.SOURCES_CLASSIFIER); - setUrl(libraryModel, JavadocOrderRootType.getInstance(), artifact, MavenConstants.JAVADOC_CLASSIFIER); + setUrl(libraryModel, OrderRootType.SOURCES, artifact, MavenConstants.CLASSIFIER_SOURCES); + setUrl(libraryModel, JavadocOrderRootType.getInstance(), artifact, MavenConstants.CLASSIFIER_JAVADOC); LibraryOrderEntry e = myRootModel.addLibraryEntry(library); e.setExported(isExportable); @@ -265,8 +265,8 @@ public class MavenRootModelAdapter { String path = classes.substring(0, dotPos); String jarSuffix = ".jar" + JarFileSystem.JAR_SEPARATOR; - String sourcesPath = path + "-" + MavenConstants.SOURCES_CLASSIFIER + jarSuffix; - String javadocPath = path + "-" + MavenConstants.JAVADOC_CLASSIFIER + jarSuffix; + String sourcesPath = path + "-" + MavenConstants.CLASSIFIER_SOURCES + jarSuffix; + String javadocPath = path + "-" + MavenConstants.CLASSIFIER_JAVADOC + jarSuffix; for (String each : library.getUrls(OrderRootType.SOURCES)) { if (!FileUtil.pathsEqual(each, sourcesPath)) return true; diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenArtifactDownloader.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenArtifactDownloader.java index 5cec30a75b..4cc1b4d9d9 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenArtifactDownloader.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenArtifactDownloader.java @@ -21,13 +21,18 @@ import gnu.trove.THashMap; import org.apache.maven.artifact.Artifact; import org.jetbrains.idea.maven.embedder.MavenEmbedderWrapper; import org.jetbrains.idea.maven.utils.MavenConstants; -import org.jetbrains.idea.maven.utils.MavenProgressIndicator; +import org.jetbrains.idea.maven.utils.MavenLog; import org.jetbrains.idea.maven.utils.MavenProcessCanceledException; +import org.jetbrains.idea.maven.utils.MavenProgressIndicator; import java.io.File; import java.util.*; +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicInteger; public class MavenArtifactDownloader { + private final static ExecutorService EXECUTOR = new ThreadPoolExecutor(0, 5, 1, TimeUnit.MINUTES, new ArrayBlockingQueue(5)); + private final MavenEmbedderWrapper myEmbedder; private final MavenProgressIndicator myProgress; private final MavenProjectsTree myProjectsTree; @@ -35,10 +40,10 @@ public class MavenArtifactDownloader { public static void download(MavenProjectsTree projectsTree, List mavenProjects, - boolean demand, - MavenEmbedderWrapper embedder, + boolean downloadSources, + boolean downloadJavadoc, MavenEmbedderWrapper embedder, MavenProgressIndicator p) throws MavenProcessCanceledException { - new MavenArtifactDownloader(projectsTree, mavenProjects, embedder, p).download(demand); + new MavenArtifactDownloader(projectsTree, mavenProjects, embedder, p).download(downloadSources, downloadJavadoc); } private MavenArtifactDownloader(MavenProjectsTree projectsTree, @@ -51,13 +56,12 @@ public class MavenArtifactDownloader { myProgress = p; } - private void download(boolean demand) throws MavenProcessCanceledException { + private void download(boolean downloadSources, boolean downloadJavadoc) throws MavenProcessCanceledException { List downloadedFiles = new ArrayList(); try { - Map> artifacts = collectArtifactsToDownload(); + Map> artifacts = collectArtifactsToDownload(); - download(MavenConstants.SOURCES_CLASSIFIER, artifacts, downloadedFiles); - download(MavenConstants.JAVADOC_CLASSIFIER, artifacts, downloadedFiles); + download(downloadSources, downloadJavadoc, artifacts, downloadedFiles); } finally { scheduleFilesRefresh(downloadedFiles); @@ -80,21 +84,23 @@ public class MavenArtifactDownloader { } } - private Map> collectArtifactsToDownload() { - Map> result = new THashMap>(); + private Map> collectArtifactsToDownload() { + Map> result = new THashMap>(); - for (MavenProject each : myMavenProjects) { - List repositories = each.getRemoteRepositories(); + for (MavenProject eachProject : myMavenProjects) { + List repositories = eachProject.getRemoteRepositories(); - for (MavenArtifact eachDependency : each.getDependencies()) { - if (!each.isSupportedDependency(eachDependency)) continue; + for (MavenArtifact eachDependency : eachProject.getDependencies()) { if (Artifact.SCOPE_SYSTEM.equalsIgnoreCase(eachDependency.getScope())) continue; if (myProjectsTree.findProject(eachDependency.getMavenId()) != null) continue; + if (!eachProject.isSupportedDependency(eachDependency)) continue; + if (!eachDependency.isResolved()) continue; - Set registeredRepositories = result.get(eachDependency); + MavenId depId = eachDependency.getMavenId(); + Set registeredRepositories = result.get(depId); if (registeredRepositories == null) { registeredRepositories = new LinkedHashSet(); - result.put(eachDependency, registeredRepositories); + result.put(depId, registeredRepositories); } registeredRepositories.addAll(repositories); } @@ -102,26 +108,49 @@ public class MavenArtifactDownloader { return result; } - private void download(String classifier, - Map> libraryArtifacts, - List downloadedFiles) throws MavenProcessCanceledException { - myProgress.setText(ProjectBundle.message("maven.downloading.artifact", classifier)); - - int step = 0; - for (Map.Entry> eachEntry : libraryArtifacts.entrySet()) { - MavenArtifact eachArtifact = eachEntry.getKey(); - - myProgress.checkCanceled(); - myProgress.setFraction(((double)step++) / libraryArtifacts.size()); - myProgress.setText2(eachArtifact.toString()); - - Artifact a = myEmbedder.createArtifact(eachArtifact.getGroupId(), - eachArtifact.getArtifactId(), - eachArtifact.getVersion(), - MavenConstants.TYPE_JAR, - classifier); - myEmbedder.resolve(a, new ArrayList(eachEntry.getValue())); - if (a.isResolved()) downloadedFiles.add(a.getFile()); + private void download(final boolean downloadSources, + final boolean downloadJavadoc, + final Map> libraryArtifacts, + final List downloadedFiles) throws MavenProcessCanceledException { + List> futures = new ArrayList>(); + + List classifiers = new ArrayList(2); + if (downloadSources) classifiers.add(MavenConstants.CLASSIFIER_SOURCES); + if (downloadJavadoc) classifiers.add(MavenConstants.CLASSIFIER_JAVADOC); + + final AtomicInteger downloaded = new AtomicInteger(); + final int total = libraryArtifacts.size() * classifiers.size(); + try { + for (final Map.Entry> eachEntry : libraryArtifacts.entrySet()) { + myProgress.checkCanceled(); + + for (final String eachClassifier : classifiers) { + futures.add(EXECUTOR.submit(new Runnable() { + public void run() { + try { + myProgress.checkCanceled(); + myProgress.setFraction(((double)downloaded.getAndIncrement()) / total); + + Artifact a = myEmbedder.resolve(eachEntry.getKey(), MavenConstants.TYPE_JAR, eachClassifier, + new ArrayList(eachEntry.getValue())); + if (a.isResolved()) downloadedFiles.add(a.getFile()); + } + catch (MavenProcessCanceledException ignore) { + } + } + })); + } + } + } + finally { + for (Future each : futures) { + try { + each.get(); + } + catch (Exception e) { + MavenLog.LOG.error(e); + } + } } } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingConfigurable.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingConfigurable.java index 63d97b6f7d..048fb34f5f 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingConfigurable.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingConfigurable.java @@ -65,5 +65,4 @@ public class MavenImportingConfigurable implements Configurable { public String getHelpTopic() { return "reference.settings.project.maven.importing"; } - } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettings.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettings.java index c1a645d1c0..d6e74bd7b6 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettings.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettings.java @@ -20,9 +20,6 @@ import org.jetbrains.annotations.NotNull; import java.util.List; -/** - * @author Vladislav.Kaznacheev - */ public class MavenImportingSettings implements Cloneable { private static final String PROCESS_RESOURCES_PHASE = "process-resources"; public static final String[] UPDATE_FOLDERS_PHASES = new String[]{ @@ -45,6 +42,9 @@ public class MavenImportingSettings implements Cloneable { private boolean useMavenOutput = true; private String updateFoldersOnImportPhase = UPDATE_FOLDERS_DEFAULT_PHASE; + private boolean downloadSourcesAutomatically = false; + private boolean downloadJavadocAutomatically = false; + private List myListeners = ContainerUtil.createEmptyCOWList(); @NotNull @@ -107,6 +107,22 @@ public class MavenImportingSettings implements Cloneable { this.updateFoldersOnImportPhase = updateFoldersOnImportPhase; } + public boolean shouldDownloadSourcesAutomatically() { + return downloadSourcesAutomatically; + } + + public void setDownloadSourcesAutomatically(boolean Value) { + this.downloadSourcesAutomatically = Value; + } + + public boolean shouldDownloadJavadocAutomatically() { + return downloadJavadocAutomatically; + } + + public void setDownloadJavadocAutomatically(boolean value) { + this.downloadJavadocAutomatically = value; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -114,9 +130,11 @@ public class MavenImportingSettings implements Cloneable { MavenImportingSettings that = (MavenImportingSettings)o; - if (importAutomatically != that.importAutomatically) return false; if (createModuleGroups != that.createModuleGroups) return false; if (createModulesForAggregators != that.createModulesForAggregators) return false; + if (importAutomatically != that.importAutomatically) return false; + if (downloadJavadocAutomatically != that.downloadJavadocAutomatically) return false; + if (downloadSourcesAutomatically != that.downloadSourcesAutomatically) return false; if (lookForNested != that.lookForNested) return false; if (useMavenOutput != that.useMavenOutput) return false; if (!dedicatedModuleDir.equals(that.dedicatedModuleDir)) return false; @@ -138,6 +156,8 @@ public class MavenImportingSettings implements Cloneable { result = 31 * result + (createModuleGroups ? 1 : 0); result = 31 * result + (useMavenOutput ? 1 : 0); result = 31 * result + (updateFoldersOnImportPhase != null ? updateFoldersOnImportPhase.hashCode() : 0); + result = 31 * result + (downloadSourcesAutomatically ? 1 : 0); + result = 31 * result + (downloadJavadocAutomatically ? 1 : 0); return result; } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.form b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.form index 371ea249a1..ba33c99cd4 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.form +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.form @@ -1,16 +1,16 @@
- + - + - + @@ -122,6 +122,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java index 227e6a1a56..03ee6c3f3c 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java @@ -16,10 +16,10 @@ package org.jetbrains.idea.maven.project; import com.intellij.ide.util.projectWizard.WizardContext; +import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.projectImport.ProjectFormatPanel; import javax.swing.*; @@ -42,9 +42,11 @@ public class MavenImportingSettingsForm { private JCheckBox myCreateGroupsCheckBox; private JComboBox myUpdateFoldersOnImportPhaseComboBox; private JCheckBox myUseMavenOutputCheckBox; + private JCheckBox myDownloadSourcesCheckBox; + private JCheckBox myDownloadJavadocCheckBox; public MavenImportingSettingsForm(boolean isImportStep) { - if(!isImportStep){ + if (!isImportStep) { mySearchRecursivelyCheckBox.setVisible(false); myProjectFormatLabel.setVisible(false); myProjectFormatComboBox.setVisible(false); @@ -60,7 +62,7 @@ public class MavenImportingSettingsForm { mySeparateModulesDirCheckBox.addActionListener(listener); mySeparateModulesDirChooser.addBrowseFolderListener(ProjectBundle.message("maven.import.title.module.dir"), "", null, - new FileChooserDescriptor(false, true, false, false, false, false)); + new FileChooserDescriptor(false, true, false, false, false, false)); myUpdateFoldersOnImportPhaseComboBox.setModel(new DefaultComboBoxModel(MavenImportingSettings.UPDATE_FOLDERS_PHASES)); } @@ -94,9 +96,12 @@ public class MavenImportingSettingsForm { data.setCreateModulesForAggregators(myCreateModulesForAggregators.isSelected()); data.setCreateModuleGroups(myCreateGroupsCheckBox.isSelected()); + data.setUseMavenOutput(myUseMavenOutputCheckBox.isSelected()); + data.setUpdateFoldersOnImportPhase((String)myUpdateFoldersOnImportPhaseComboBox.getSelectedItem()); - data.setUseMavenOutput(myUseMavenOutputCheckBox.isSelected()); + data.setDownloadSourcesAutomatically(myDownloadSourcesCheckBox.isSelected()); + data.setDownloadJavadocAutomatically(myDownloadJavadocCheckBox.isSelected()); } public void setData(MavenImportingSettings data) { @@ -109,9 +114,12 @@ public class MavenImportingSettingsForm { myCreateModulesForAggregators.setSelected(data.isCreateModulesForAggregators()); myCreateGroupsCheckBox.setSelected(data.isCreateModuleGroups()); + myUseMavenOutputCheckBox.setSelected(data.isUseMavenOutput()); + myUpdateFoldersOnImportPhaseComboBox.setSelectedItem(data.getUpdateFoldersOnImportPhase()); - myUseMavenOutputCheckBox.setSelected(data.isUseMavenOutput()); + myDownloadSourcesCheckBox.setSelected(data.shouldDownloadSourcesAutomatically()); + myDownloadJavadocCheckBox.setSelected(data.shouldDownloadJavadocAutomatically()); updateControls(); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java index a403a04343..5068048a58 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java @@ -349,6 +349,9 @@ public class MavenProjectsManager extends SimpleProjectComponent implements Pers if (projectWithChanges.first.hasUnresolvedPlugins()) { schedulePluginsResolving(projectWithChanges.first, nativeMavenProject); } + scheduleArtifactsDownloading(Collections.singleton(projectWithChanges.first), + getImportingSettings().shouldDownloadSourcesAutomatically(), + getImportingSettings().shouldDownloadJavadocAutomatically()); scheduleForNextImport(projectWithChanges); } processMessage(message); @@ -705,16 +708,23 @@ public class MavenProjectsManager extends SimpleProjectComponent implements Pers }); } - public void scheduleArtifactsDownloading(final Collection projects) { + public void scheduleArtifactsDownloading(final Collection projects, final boolean sources, final boolean javadoc) { + if (!sources && !javadoc) return; + runWhenFullyOpen(new Runnable() { public void run() { for (MavenProject each : projects) { - myArtifactsDownloadingProcessor.scheduleTask(new MavenProjectsProcessorArtifactsDownloadingTask(each, myProjectsTree)); + myArtifactsDownloadingProcessor.scheduleTask( + new MavenProjectsProcessorArtifactsDownloadingTask(each, myProjectsTree, sources, javadoc)); } } }); } + public void scheduleArtifactsDownloading(final Collection projects) { + scheduleArtifactsDownloading(projects, true, true); + } + public void scheduleArtifactsDownloadingForAllProjects() { scheduleArtifactsDownloading(getProjects()); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java index 00a6022e80..4e01234220 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java @@ -21,13 +21,20 @@ import org.jetbrains.idea.maven.utils.MavenProcessCanceledException; import org.jetbrains.idea.maven.utils.MavenProgressIndicator; public class MavenProjectsProcessorArtifactsDownloadingTask extends MavenProjectsProcessorBasicTask { + private final boolean myDownloadSources; + private final boolean myDownloadJavadoc; + public MavenProjectsProcessorArtifactsDownloadingTask(MavenProject project, - MavenProjectsTree tree) { + MavenProjectsTree tree, + boolean downloadSources, + boolean downloadJavadoc) { super(project, tree); + myDownloadSources = downloadSources; + myDownloadJavadoc = downloadJavadoc; } public void perform(Project project, MavenEmbeddersManager embeddersManager, MavenConsole console, MavenProgressIndicator indicator) throws MavenProcessCanceledException { - myTree.downloadArtifacts(myMavenProject, embeddersManager, console, indicator); + myTree.downloadArtifacts(myMavenProject, myDownloadSources, myDownloadJavadoc, embeddersManager, console, indicator); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java index 6f35528caa..8da3ceb06a 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java @@ -1056,6 +1056,8 @@ public class MavenProjectsTree { } public void downloadArtifacts(MavenProject mavenProject, + boolean downloadSources, + boolean downloadJavadoc, MavenEmbeddersManager embeddersManager, MavenConsole console, MavenProgressIndicator process) throws MavenProcessCanceledException { @@ -1063,7 +1065,7 @@ public class MavenProjectsTree { embedder.customizeForResolve(console, process); try { - MavenArtifactDownloader.download(this, Collections.singletonList(mavenProject), true, embedder, process); + MavenArtifactDownloader.download(this, Collections.singletonList(mavenProject), downloadSources, downloadJavadoc, embedder, process); fireArtifactsDownloaded(mavenProject); } finally { @@ -1080,13 +1082,8 @@ public class MavenProjectsTree { embedder.customizeForResolve(console, process); try { - Artifact artifact = embedder.createArtifact(id.getGroupId(), - id.getArtifactId(), - id.getVersion(), - MavenConstants.TYPE_JAR, - null); + Artifact artifact = embedder.resolve(id, MavenConstants.TYPE_JAR, null, mavenProject.getRemoteRepositories()); artifact.setScope(Artifact.SCOPE_COMPILE); - embedder.resolve(artifact, mavenProject.getRemoteRepositories()); return new MavenArtifact(artifact, mavenProject.getLocalRepository()); } finally { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenConstants.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenConstants.java index 18b02af306..f031e6b6c8 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenConstants.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenConstants.java @@ -25,8 +25,8 @@ public class MavenConstants { public static final String TYPE_JAR = "jar"; public static final String TYPE_WAR = "war"; - public static final String JAVADOC_CLASSIFIER = "javadoc"; - public static final String SOURCES_CLASSIFIER = "sources"; + public static final String CLASSIFIER_JAVADOC = "javadoc"; + public static final String CLASSIFIER_SOURCES = "sources"; public static final String SCOPE_COMPILE = "compile"; public static final String SCOPE_PROVIDEED = "provided"; diff --git a/plugins/maven/src/main/resources/ProjectBundle.properties b/plugins/maven/src/main/resources/ProjectBundle.properties index b216fed374..a04cc0f049 100644 --- a/plugins/maven/src/main/resources/ProjectBundle.properties +++ b/plugins/maven/src/main/resources/ProjectBundle.properties @@ -14,7 +14,6 @@ maven.downloading.plugins=Downloading Maven plugins maven.downloading.pom.plugins=Downloading plugins for {0} maven.downloading=Downloading Maven sources and javadocs maven.downloading.finished=Finished downloading artifacts -maven.downloading.artifact=Downloading {0} maven.transfer.progress={0}/{1}K [{2}] {3} maven.transfer.start=Checking [{0}] {1} -- 2.11.4.GIT