diff options
Diffstat (limited to 'org.eclipse.m2e.core/src')
3 files changed, 50 insertions, 28 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenModelManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenModelManager.java index 0e848b7b..3d4b5ed5 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenModelManager.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/MavenModelManager.java @@ -45,6 +45,7 @@ import org.eclipse.osgi.util.NLS; import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.Artifact; +import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.model.DependencyManagement; import org.apache.maven.project.MavenProject; @@ -158,6 +159,10 @@ public class MavenModelManager { } } + /** + * @deprecated use {@link #readDependencyTree(IMavenProjectFacade, MavenProject, String, IProgressMonitor)}, which + * supports workspace dependency resolution + */ public synchronized DependencyNode readDependencyTree(IFile file, String classpath, IProgressMonitor monitor) throws CoreException { monitor.setTaskName(Messages.MavenModelManager_monitor_reading); @@ -166,13 +171,30 @@ public class MavenModelManager { return readDependencyTree(mavenProject, classpath, monitor); } - public synchronized DependencyNode readDependencyTree(MavenProject mavenProject, - String classpath, IProgressMonitor monitor) throws CoreException { + /** + * @deprecated use {@link #readDependencyTree(IMavenProjectFacade, MavenProject, String, IProgressMonitor)}, which + * supports workspace dependency resolution + */ + public DependencyNode readDependencyTree(MavenProject mavenProject, String classpath, IProgressMonitor monitor) + throws CoreException { + return readDependencyTree(null, mavenProject, classpath, monitor); + } + + public synchronized DependencyNode readDependencyTree(IMavenProjectFacade context, MavenProject mavenProject, + String scope, IProgressMonitor monitor) throws CoreException { monitor.setTaskName(Messages.MavenModelManager_monitor_building); IMaven maven = MavenPlugin.getMaven(); - DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(maven.createSession( - maven.createExecutionRequest(monitor), mavenProject).getRepositorySession()); + + MavenExecutionRequest executionRequest; + if(context != null) { + executionRequest = MavenPlugin.getMavenProjectRegistry().createExecutionRequest(context, monitor); + } else { + executionRequest = maven.createExecutionRequest(monitor); + } + + DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(maven.createSession(executionRequest, + mavenProject).getRepositorySession()); DependencyGraphTransformer transformer = new ChainedDependencyGraphTransformer(new JavaEffectiveScopeCalculator(), new NearestVersionConflictResolver()); @@ -211,14 +233,14 @@ public class MavenModelManager { Collection<String> scopes = new HashSet<String>(); Collections.addAll(scopes, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_TEST); - if(Artifact.SCOPE_COMPILE.equals(classpath)) { + if(Artifact.SCOPE_COMPILE.equals(scope)) { scopes.remove(Artifact.SCOPE_COMPILE); scopes.remove(Artifact.SCOPE_SYSTEM); scopes.remove(Artifact.SCOPE_PROVIDED); - } else if(Artifact.SCOPE_RUNTIME.equals(classpath)) { + } else if(Artifact.SCOPE_RUNTIME.equals(scope)) { scopes.remove(Artifact.SCOPE_COMPILE); scopes.remove(Artifact.SCOPE_RUNTIME); - } else if(Artifact.SCOPE_COMPILE_PLUS_RUNTIME.equals(classpath)) { + } else if(Artifact.SCOPE_COMPILE_PLUS_RUNTIME.equals(scope)) { scopes.remove(Artifact.SCOPE_COMPILE); scopes.remove(Artifact.SCOPE_SYSTEM); scopes.remove(Artifact.SCOPE_PROVIDED); diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java index 0d7e42bb..0cd641fe 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java @@ -22,8 +22,6 @@ import java.util.List; import java.util.Properties; import java.util.Set; -import org.osgi.framework.Bundle; -import org.osgi.framework.Version; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,8 +69,8 @@ import org.eclipse.m2e.core.embedder.MavenModelManager; import org.eclipse.m2e.core.internal.IMavenConstants; import org.eclipse.m2e.core.internal.MavenPluginActivator; import org.eclipse.m2e.core.internal.Messages; -import org.eclipse.m2e.core.internal.archetype.ArchetypeManager; import org.eclipse.m2e.core.internal.archetype.ArchetypeCatalogFactory.RemoteCatalogFactory; +import org.eclipse.m2e.core.internal.archetype.ArchetypeManager; import org.eclipse.m2e.core.internal.lifecyclemapping.LifecycleMappingFactory; import org.eclipse.m2e.core.internal.markers.IMavenMarkerManager; import org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager; @@ -166,33 +164,27 @@ public class ProjectConfigurationManager implements IProjectConfigurationManager } private void hideNestedProjectsFromParents(List<IProject> projects) { - - if (!MavenPlugin.getMavenConfiguration().isHideFoldersOfNestedProjects()) { + + if(!MavenPlugin.getMavenConfiguration().isHideFoldersOfNestedProjects()) { return; } + // Prevent child project folders from showing up in parent project folders. - - Bundle bundle = ResourcesPlugin.getPlugin().getBundle(); - String version = (String) bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_VERSION); - Version currentVersion = org.osgi.framework.Version.parseVersion(version); - Version e34Version = new Version(3,4,0); - if (currentVersion.compareTo(e34Version) < 0) { - return; // IResource.setHidden doesn't exist in Eclipse prior to version 3.4 - } + HashMap<File, IProject> projectFileMap = new HashMap<File, IProject>(); - - for (IProject project: projects) { + + for(IProject project : projects) { projectFileMap.put(project.getLocation().toFile(), project); } - for (IProject project: projects) { + for(IProject project : projects) { File projectFile = project.getLocation().toFile(); IProject physicalParentProject = projectFileMap.get(projectFile.getParentFile()); - if (physicalParentProject == null) { + if(physicalParentProject == null) { continue; } IFolder folder = physicalParentProject.getFolder(projectFile.getName()); - if (folder.exists()) { - setHidden(folder); + if(folder.exists()) { + setHidden(folder); } } } @@ -295,6 +287,13 @@ public class ProjectConfigurationManager implements IProjectConfigurationManager addMavenNature(project, monitor); + // Configure project file encoding + MavenProject mavenProject = request.getMavenProject(); + Properties mavenProperties = mavenProject.getProperties(); + String sourceEncoding = mavenProperties.getProperty("project.build.sourceEncoding"); + log.debug("Setting encoding for project {}: {}", project.getName(), sourceEncoding); //$NON-NLS-1$ + project.setDefaultCharset(sourceEncoding, monitor); + ILifecycleMapping lifecycleMapping = getLifecycleMapping(mavenProjectFacade); if(lifecycleMapping != null) { diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/IMavenProjectFacade.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/IMavenProjectFacade.java index 0d510e0f..9589f59d 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/IMavenProjectFacade.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/IMavenProjectFacade.java @@ -82,8 +82,9 @@ public interface IMavenProjectFacade { MavenProject getMavenProject(IProgressMonitor monitor) throws CoreException; /** - * Returns cached MavenProject instance associated with this facade or null, - * if the cache has not been populated yet. + * Returns cached MavenProject instance associated with this facade or <code>null</code>, if the cache has not been + * populated yet, for example right after workspace restart. Clients must use + * {@link #getMavenProject(IProgressMonitor)} unless they are prepared to deal with <code>null</code> return value. */ MavenProject getMavenProject(); |