[ https://issues.apache.org/jira/browse/MASSEMBLY-1008?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17811490#comment-17811490 ]
ASF GitHub Bot commented on MASSEMBLY-1008: ------------------------------------------- slawekjaranowski commented on code in PR #166: URL: https://github.com/apache/maven-assembly-plugin/pull/166#discussion_r1468436721 ########## src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java: ########## @@ -158,14 +188,91 @@ void updateDependencySetResolutionRequirements( Set<Artifact> dependencyArtifacts = null; if (set.isUseTransitiveDependencies()) { - dependencyArtifacts = project.getArtifacts(); + try { + // we need resolve project again according to requested scope + dependencyArtifacts = resolveTransitive(systemSession, set.getScope(), project); + } catch (org.eclipse.aether.resolution.DependencyResolutionException e) { + throw new DependencyResolutionException(e.getMessage(), e); + } } else { + // FIXME remove using deprecated method dependencyArtifacts = project.getDependencyArtifacts(); } requirements.addArtifacts(dependencyArtifacts); - LOGGER.debug("Dependencies for project: " + project.getId() + " are:\n" - + StringUtils.join(dependencyArtifacts.iterator(), "\n")); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug( + "Dependencies for project: {} are:\n{}", + project.getId(), + StringUtils.join(dependencyArtifacts.iterator(), "\n")); + } } } + + private Set<Artifact> resolveTransitive( + RepositorySystemSession repositorySession, String scope, MavenProject project) + throws org.eclipse.aether.resolution.DependencyResolutionException { + + // scope dependency filter + DependencyFilter scoopeDependencyFilter = DependencyFilterUtils.classpathFilter(scope); + + // get project dependencies filtered by requested scope + List<Dependency> dependencies = project.getDependencies().stream() + .map(d -> RepositoryUtils.toDependency(d, repositorySession.getArtifactTypeRegistry())) + .filter(d -> scoopeDependencyFilter.accept(new DefaultDependencyNode(d), null)) + .collect(Collectors.toList()); + + List<Dependency> managedDependencies = Optional.ofNullable(project.getDependencyManagement()) + .map(DependencyManagement::getDependencies) + .map(list -> list.stream() + .map(d -> RepositoryUtils.toDependency(d, repositorySession.getArtifactTypeRegistry())) + .collect(Collectors.toList())) + .orElse(null); + + CollectRequest collectRequest = new CollectRequest(); + collectRequest.setManagedDependencies(managedDependencies); + collectRequest.setRepositories(project.getRemoteProjectRepositories()); + collectRequest.setDependencies(dependencies); + collectRequest.setRootArtifact(RepositoryUtils.toArtifact(project.getArtifact())); + + DependencyRequest request = new DependencyRequest(collectRequest, scoopeDependencyFilter); + + DependencyResult dependencyResult = repositorySystem.resolveDependencies(repositorySession, request); + + // cache for artifact mapping + Map<org.eclipse.aether.artifact.Artifact, Artifact> etherToMavenArtifacts = new HashMap<>(); Review Comment: fixed > Assembly plugin handles scopes wrongly > -------------------------------------- > > Key: MASSEMBLY-1008 > URL: https://issues.apache.org/jira/browse/MASSEMBLY-1008 > Project: Maven Assembly Plugin > Issue Type: Bug > Components: dependencySet > Reporter: Tamas Cservenak > Assignee: Slawomir Jaranowski > Priority: Major > Fix For: 3.7.0 > > > This affects all assembly releases. -- This message was sent by Atlassian Jira (v8.20.10#820010)