[ https://issues.apache.org/jira/browse/MDEP-776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17899463#comment-17899463 ]
ASF GitHub Bot commented on MDEP-776: ------------------------------------- elharo commented on code in PR #463: URL: https://github.com/apache/maven-dependency-plugin/pull/463#discussion_r1848190882 ########## src/main/java/org/apache/maven/plugins/dependency/fromDependencies/CopyDependenciesMojo.java: ########## @@ -111,6 +109,21 @@ protected void doExecute() throws MojoExecutionException { Set<Artifact> artifacts = dss.getResolvedDependencies(); if (!useRepositoryLayout) { + Map<String, Integer> copies = new HashMap<>(); + for (Artifact artifactItem : artifacts) { + String destFileName = DependencyUtil.getFormattedFileName( + artifactItem, stripVersion, prependGroupId, useBaseVersion, stripClassifier); + int numCopies = copies.getOrDefault(destFileName, 0); + copies.put(destFileName, numCopies + 1); + } + for (Map.Entry<String, Integer> entry : copies.entrySet()) { + if (entry.getValue() > 1) { + getLog().warn("Multiple files with the name " + entry.getKey() + " in the dependency tree."); + getLog().warn( + "Not all jars will be available. Consider using prependGroupId, useSubDirectoryPerArtifact, or useRepositoryLayout."); Review Comment: done > copy-dependencies overwrites artifacts of the same artifact id > -------------------------------------------------------------- > > Key: MDEP-776 > URL: https://issues.apache.org/jira/browse/MDEP-776 > Project: Maven Dependency Plugin > Issue Type: Bug > Components: copy-dependencies > Affects Versions: 3.1.2, 3.2.0 > Reporter: Nikolaos Georgiou > Assignee: Elliotte Rusty Harold > Priority: Major > > We have a project which has 2 dependencies of different groupId but same > artifactId and version, e.g. com.acme:foo:1.2.3 and com.ecorp:foo:1.2.3 > We use the copy-dependencies goal of the plugin to copy libraries under > target/lib folder. > Actual Result: > * only one foo.jar survives in the target/lib folder. The other one silently > gets overwritten. This leads to difficult to diagnose runtime errors, as one > JAR is missing. > > Expected Result: > * it should at least give a warning, if not an error, that it has > overwritten an artifact during this process > > Known workaround: > * we activated useRepositoryLayout, which allows both artifacts to survive > under a directory structure, which complicates a bit our classpath building > process (from target/lib/* we need to find all the JARs with a bit of bash > glue) > -- This message was sent by Atlassian Jira (v8.20.10#820010)