diff --git a/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/MavenWorkingSessionImpl.java b/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/MavenWorkingSessionImpl.java index e4f5444be..5befb0c6f 100644 --- a/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/MavenWorkingSessionImpl.java +++ b/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/MavenWorkingSessionImpl.java @@ -21,21 +21,16 @@ import eu.maveniverse.maven.mima.context.Runtime; import eu.maveniverse.maven.mima.context.Runtimes; import java.io.File; -import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Objects; -import java.util.Optional; import java.util.Properties; import java.util.Set; -import java.util.function.Predicate; import java.util.logging.Level; import java.util.logging.Logger; -import java.util.stream.Collectors; import org.apache.maven.model.Model; import org.apache.maven.model.Profile; @@ -44,19 +39,16 @@ import org.apache.maven.model.building.DefaultModelBuildingRequest; import org.apache.maven.model.building.ModelBuilder; import org.apache.maven.model.building.ModelBuildingException; +import org.apache.maven.model.building.ModelBuildingRequest; import org.apache.maven.model.building.ModelBuildingResult; import org.apache.maven.model.building.ModelProblem; import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.collection.CollectRequest; import org.eclipse.aether.collection.DependencyCollectionException; import org.eclipse.aether.collection.DependencySelector; -import org.eclipse.aether.graph.DefaultDependencyNode; -import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.repository.RemoteRepository.Builder; import org.eclipse.aether.repository.RepositoryPolicy; -import org.eclipse.aether.resolution.ArtifactRequest; import org.eclipse.aether.resolution.ArtifactResolutionException; import org.eclipse.aether.resolution.ArtifactResult; import org.eclipse.aether.resolution.DependencyResolutionException; @@ -159,7 +151,9 @@ public MavenWorkingSession loadPomFromFile(File pomFile, Properties userProperti final DefaultModelBuildingRequest request = new DefaultModelBuildingRequest() .setSystemProperties(SecurityActions.getProperties()).setProfiles(this.getSettingsDefinedProfiles()) .setPomFile(pomFile).setActiveProfileIds(SettingsXmlProfileSelector.explicitlyActivatedProfiles(profiles)) - .setInactiveProfileIds(SettingsXmlProfileSelector.explicitlyDisabledProfiles(profiles)); + .setInactiveProfileIds(SettingsXmlProfileSelector.explicitlyDisabledProfiles(profiles)) + .setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL) + .setProcessPlugins(false); if (userProperties != null){ request.setUserProperties(userProperties); @@ -197,95 +191,6 @@ public MavenWorkingSession loadPomFromFile(File pomFile, Properties userProperti return this; } - private Collection resolveProjectLocal(final List depsForResolution, - Set additionalDependencies) { - Collection projectLocalDependencies = new ArrayList<>(depsForResolution.size()); - for (MavenDependency dependency : depsForResolution) { - Path resolved = resolveProjectLocal(dependency.getGroupId(), dependency.getArtifactId(), - dependency.getVersion(), Optional.ofNullable(dependency.getClassifier()), - Optional.ofNullable(dependency.getPackaging().getExtension()), additionalDependencies); - if (resolved != null && resolved.toFile().exists()) { - Artifact artifact = new DefaultArtifact(dependency.getGroupId(), dependency.getArtifactId(), - dependency.getClassifier(), dependency.getPackaging().getExtension(), dependency.getVersion(), - null, resolved.toFile()); - ArtifactResult result = new ArtifactResult(new ArtifactRequest() - .setDependencyNode(new DefaultDependencyNode( - new Dependency(artifact, dependency.getScope().name(), dependency.isOptional())))); - result.setArtifact(artifact); - projectLocalDependencies.add(result); - } - } - return projectLocalDependencies; - } - - private Path resolveProjectLocal(String groupId, String artifactId, String version, - Optional classifier, Optional extension, - Set additionalDependencies) { - Path projectLocalRepository = findProjectLocalRepository(); - if (projectLocalRepository == null) { - return null; - } - - Predicate isNotEmpty = s -> !s.isEmpty(); - processAdditionalDependencies(projectLocalRepository, groupId, artifactId, version, - additionalDependencies); - - return projectLocalRepository.resolve(groupId).resolve(artifactId).resolve(version) - .resolve(toVersionedArtifact(artifactId, version) - + classifier.filter(isNotEmpty).map(c -> "-" + c).orElse("") - + "." + extension.filter(isNotEmpty).orElse("jar")); - } - - private static String toVersionedArtifact(String artifactId, String version) { - return artifactId + "-" + version; - } - - private void processAdditionalDependencies(Path projectLocalRepository, String groupId, - String artifactId, String version, - Set additionalDependencies) { - Path directory = projectLocalRepository.resolve(groupId).resolve(artifactId).resolve(version); - File pom = directory.resolve(toVersionedArtifact(artifactId, version) + "-consumer.pom").toFile(); - if (!pom.exists()) { - pom = directory.resolve(toVersionedArtifact(artifactId, version) + ".pom").toFile(); - } - if (pom.exists()) { - Set transitiveDependencies = loadPomFromFile(pom).getParsedPomFile().getDependencies(); - transitiveDependencies.removeAll(additionalDependencies); - if (!transitiveDependencies.isEmpty()) { - additionalDependencies.addAll(transitiveDependencies); - transitiveDependencies.forEach(dependency -> processAdditionalDependencies(projectLocalRepository, - dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), additionalDependencies)); - } - } - } - - private List filterFromLocal(final List depsForResolution, - final Collection projectLocalDependencies) { - return depsForResolution.stream() - .filter(dependency -> projectLocalDependencies.stream() - .noneMatch(result -> MavenConverter.asArtifact(dependency, - getSession().getArtifactTypeRegistry()) - .setProperties(Collections.EMPTY_MAP) - .equals(result.getArtifact().setFile(null)))) - .collect(Collectors.toList()); - } - - /** - * @return absolute path to the project-local repository or null if not found - */ - private Path findProjectLocalRepository() { - Path targetPath = Paths.get("target/project-local-repo"); - Path currentPath = Paths.get("").toAbsolutePath(); - while (currentPath != null) { - Path path = currentPath.resolve(targetPath); - if (path.toFile().exists()) { - return path; - } - currentPath = currentPath.getParent(); - } - return null; - } - @Override public Collection resolveDependencies(final MavenResolutionStrategy strategy) throws ResolutionException { @@ -296,18 +201,7 @@ public Collection resolveDependencies(final MavenResoluti final List repos = this.getRemoteRepositories(); - List resolveFromRepository; - Collection projectLocalDependencies = Collections.emptyList(); - if (Boolean.getBoolean("org.jboss.shrinkwrap.resolver.maven.disableProjectLocal")) { - resolveFromRepository = depsForResolution; - } else { - Set allDependencies = new LinkedHashSet<>(depsForResolution); - projectLocalDependencies = resolveProjectLocal(depsForResolution, allDependencies); - resolveFromRepository = filterFromLocal( - allDependencies.stream().collect(Collectors.toList()), projectLocalDependencies); - } - - final CollectRequest request = new CollectRequest(MavenConverter.asDependencies(resolveFromRepository, + final CollectRequest request = new CollectRequest(MavenConverter.asDependencies(depsForResolution, getSession().getArtifactTypeRegistry()), MavenConverter.asDependencies(depManagement, getSession().getArtifactTypeRegistry()), repos); @@ -340,12 +234,7 @@ public Collection resolveDependencies(final MavenResoluti throw wrapException(e); } - final Collection resolvedArtifacts = new ArrayList<>(results.size() + projectLocalDependencies.size()); - - for (final ArtifactResult result : projectLocalDependencies) { - resolvedArtifacts.add(MavenResolvedArtifactImpl.fromArtifactResult(result)); - } - + final Collection resolvedArtifacts = new ArrayList<>(results.size()); for (final ArtifactResult result : results) { resolvedArtifacts.add(MavenResolvedArtifactImpl.fromArtifactResult(result)); } diff --git a/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/bootstrap/MavenRepositorySystem.java b/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/bootstrap/MavenRepositorySystem.java index 70c2069c7..9b981d1aa 100644 --- a/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/bootstrap/MavenRepositorySystem.java +++ b/maven/impl-maven/src/main/java/org/jboss/shrinkwrap/resolver/impl/maven/bootstrap/MavenRepositorySystem.java @@ -76,7 +76,7 @@ public MavenRepositorySystem() { * @return A working session spawned from the repository system. */ public DefaultRepositorySystemSession getSession(final Settings settings, boolean legacyLocalRepository) { - DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(); + DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(context.repositorySystemSession()); MavenManagerBuilder builder = new MavenManagerBuilder(context.repositorySystem(), settings); diff --git a/maven/maven-plugin/src/it/dependency-tree-no-deps/invoker.properties b/maven/maven-plugin/src/it/dependency-tree-no-deps/invoker.properties index 95bce4781..700b8292b 100644 --- a/maven/maven-plugin/src/it/dependency-tree-no-deps/invoker.properties +++ b/maven/maven-plugin/src/it/dependency-tree-no-deps/invoker.properties @@ -1 +1 @@ -invoker.goals = ${project.groupId}:${project.artifactId}:${project.version}:dependency-tree +invoker.goals = ${project.groupId}:${project.artifactId}:${project.version}:dependency-tree -e diff --git a/maven/maven-plugin/src/it/dependency-tree-scope/invoker.properties b/maven/maven-plugin/src/it/dependency-tree-scope/invoker.properties index 95bce4781..700b8292b 100644 --- a/maven/maven-plugin/src/it/dependency-tree-scope/invoker.properties +++ b/maven/maven-plugin/src/it/dependency-tree-scope/invoker.properties @@ -1 +1 @@ -invoker.goals = ${project.groupId}:${project.artifactId}:${project.version}:dependency-tree +invoker.goals = ${project.groupId}:${project.artifactId}:${project.version}:dependency-tree -e diff --git a/maven/maven-plugin/src/it/dependency-tree/invoker.properties b/maven/maven-plugin/src/it/dependency-tree/invoker.properties index 95bce4781..700b8292b 100644 --- a/maven/maven-plugin/src/it/dependency-tree/invoker.properties +++ b/maven/maven-plugin/src/it/dependency-tree/invoker.properties @@ -1 +1 @@ -invoker.goals = ${project.groupId}:${project.artifactId}:${project.version}:dependency-tree +invoker.goals = ${project.groupId}:${project.artifactId}:${project.version}:dependency-tree -e