You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Ahmed Hammad (JIRA)" <ji...@apache.org> on 2018/04/26 12:47:00 UTC
[jira] [Created] (MDEP-609) Dependency analyzer gets confused if
the same package is defined in 2 different artifacts
Ahmed Hammad created MDEP-609:
---------------------------------
Summary: Dependency analyzer gets confused if the same package is defined in 2 different artifacts
Key: MDEP-609
URL: https://issues.apache.org/jira/browse/MDEP-609
Project: Maven Dependency Plugin
Issue Type: Bug
Components: analyze
Affects Versions: 3.1.0
Reporter: Ahmed Hammad
If a certain package is defined in 2 different artifacts, and a a maven module declares a dependency on these 2 artifacts (once through a transitive dependency andĀ onceĀ using a declared dependency), dependency analyzer reports the transitive dependency as "Used Undeclared", while declared dependencies should always take precedence (even if they appear later in the POM)
For example:
Project 1 pom:
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>project1</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>project2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
</project>
{code}
Project 2 pom:
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>project2</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
</project>
{code}
And Project 1 uses a package which can be found in both hamcrest-core and hamcrest-all:
{code:java}
import org.hamcrest.core.IsEqual;
class Test {
IsEqual isEqual;
}
{code}
When doing a dependency analysis for Project 1, no "Used undeclared" are expected to be seen, because Project 1 declares a dependency on hamcrest-all.
However, I get:
[INFO] --- maven-dependency-plugin:2.8:analyze (default-cli) @ project1 ---
[WARNING] Used undeclared dependencies found:
[WARNING] org.hamcrest:hamcrest-core:jar:1.3:compile
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)