[
https://issues.apache.org/jira/browse/MDEP-776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17899400#comment-17899400
]
ASF GitHub Bot commented on MDEP-776:
-------------------------------------
michael-o commented on code in PR #463:
URL:
https://github.com/apache/maven-dependency-plugin/pull/463#discussion_r1847944913
##########
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:
JARs
> 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)