[
https://issues.apache.org/jira/browse/MNG-7349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17451948#comment-17451948
]
Joep Weijers edited comment on MNG-7349 at 12/1/21, 6:12 PM:
-------------------------------------------------------------
I also found that you can not solve this message in the case a dependency has a
transitive dependency on a relocated artifact. Taking for example
{{com.lowagie:itext-rtf:2.1.7}}, which depends on
{{bouncycastle:bctsp-jdk14:jar:138}}:
{code:java}
<dependencies>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-rtf</artifactId>
<version>2.1.7</version>
</dependency>
</dependencies>
{code}
{{mvn dependency:tree}} shows the warning, as expected:
{code:java}
[WARNING] The artifact bouncycastle:bctsp-jdk14:jar:138 has been relocated to
org.bouncycastle:bctsp-jdk14:jar:1.38
[INFO]
[INFO] --- maven-dependency-plugin:3.2.0:tree (default-cli) @
relocation-messages ---
[INFO] com.topdesk.maven.test:relocation-messages:jar:0.0.1-SNAPSHOT
[INFO] \- com.lowagie:itext-rtf:jar:2.1.7:compile
[INFO] +- bouncycastle:bcmail-jdk14:jar:138:compile
[INFO] +- bouncycastle:bcprov-jdk14:jar:138:compile
[INFO] \- org.bouncycastle:bctsp-jdk14:jar:1.38:compile
[INFO] +- org.bouncycastle:bcprov-jdk14:jar:1.38:compile
[INFO] \- org.bouncycastle:bcmail-jdk14:jar:1.38:compile
{code}
Now I want to exclude these transitive dependencies, and I expect that will
also remove the warning, as it does in maven 3.8.2:
{code:java}
<dependencies>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-rtf</artifactId>
<version>2.1.7</version>
<exclusions>
<exclusion>
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>org.bouncycastle</groupId>
<artifactId>bctsp-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>bouncycastle</groupId>
<artifactId>bcmail-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
{code}
{{mvn dependency:tree}} still shows the warning, even though the dependencies
are indeed excluded:
{code:java}
[WARNING] The artifact bouncycastle:bctsp-jdk14:jar:138 has been relocated to
org.bouncycastle:bctsp-jdk14:jar:1.38
[INFO]
[INFO] --- maven-dependency-plugin:3.2.0:tree (default-cli) @
relocation-messages ---
[INFO] com.topdesk.maven.test:relocation-messages:jar:0.0.1-SNAPSHOT
[INFO] \- com.lowagie:itext-rtf:jar:2.1.7:compile
{code}
Also in this case I would not expect the warning message to show up.
As a workaround I tried to manage the dependency, but alas, the warning still
shows, even though we are no longer using that particular version:
{code:java}
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bctsp-jdk14</artifactId>
<version>1.46</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-rtf</artifactId>
<version>2.1.7</version>
<exclusions>
<exclusion>
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>bouncycastle</groupId>
<artifactId>bcmail-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
{code}
{{{}mvn dependency:tree{}}}:
{code:java}
[WARNING] The artifact bouncycastle:bctsp-jdk14:jar:138 has been relocated to
org.bouncycastle:bctsp-jdk14:jar:1.38
[INFO]
[INFO] --- maven-dependency-plugin:3.2.0:tree (default-cli) @
relocation-messages ---
[INFO] com.topdesk.maven.test:relocation-messages:jar:0.0.1-SNAPSHOT
[INFO] \- com.lowagie:itext-rtf:jar:2.1.7:compile
[INFO] \- org.bouncycastle:bctsp-jdk14:jar:1.46:compile
[INFO] +- org.bouncycastle:bcprov-jdk14:jar:1.46:compile
[INFO] \- org.bouncycastle:bcmail-jdk14:jar:1.46:compile
{code}
was (Author: joepweijers):
I also found that you can not solve this message in the case a dependency has a
transitive dependency on a relocated artifact. Taking for example
{{com.lowagie:itext-rtf:2.1.7}}, which depends on
{{bouncycastle:bctsp-jdk14:jar:138}}:
{code:java}
<dependencies>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-rtf</artifactId>
<version>2.1.7</version>
</dependency>
</dependencies>
{code}
{{mvn dependency:tree}} shows the warning:
{code:java}
[WARNING] The artifact bouncycastle:bctsp-jdk14:jar:138 has been relocated to
org.bouncycastle:bctsp-jdk14:jar:1.38
[INFO]
[INFO] --- maven-dependency-plugin:3.2.0:tree (default-cli) @
relocation-messages ---
[INFO] com.topdesk.maven.test:relocation-messages:jar:0.0.1-SNAPSHOT
[INFO] \- com.lowagie:itext-rtf:jar:2.1.7:compile
[INFO] +- bouncycastle:bcmail-jdk14:jar:138:compile
[INFO] +- bouncycastle:bcprov-jdk14:jar:138:compile
[INFO] \- org.bouncycastle:bctsp-jdk14:jar:1.38:compile
[INFO] +- org.bouncycastle:bcprov-jdk14:jar:1.38:compile
[INFO] \- org.bouncycastle:bcmail-jdk14:jar:1.38:compile
{code}
Now if I exclude these transitive dependency:
{code:java}
<dependencies>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-rtf</artifactId>
<version>2.1.7</version>
<exclusions>
<exclusion>
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>org.bouncycastle</groupId>
<artifactId>bctsp-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>bouncycastle</groupId>
<artifactId>bcmail-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
{code}
{{mvn dependency:tree}} still shows the warning, even though the dependencies
are indeed excluded:
{code:java}
[WARNING] The artifact bouncycastle:bctsp-jdk14:jar:138 has been relocated to
org.bouncycastle:bctsp-jdk14:jar:1.38
[INFO]
[INFO] --- maven-dependency-plugin:3.2.0:tree (default-cli) @
relocation-messages ---
[INFO] com.topdesk.maven.test:relocation-messages:jar:0.0.1-SNAPSHOT
[INFO] \- com.lowagie:itext-rtf:jar:2.1.7:compile
{code}
Also in this case I would not expect the warning message to show up.
As a workaround I tried to manage the dependency, but alas, the warning still
shows, even though we are no longer using that particular version:
{code:java}
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bctsp-jdk14</artifactId>
<version>1.46</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-rtf</artifactId>
<version>2.1.7</version>
<exclusions>
<exclusion>
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>bouncycastle</groupId>
<artifactId>bcmail-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
{code}
{{{}mvn dependency:tree{}}}:
{code:java}
[WARNING] The artifact bouncycastle:bctsp-jdk14:jar:138 has been relocated to
org.bouncycastle:bctsp-jdk14:jar:1.38
[INFO]
[INFO] --- maven-dependency-plugin:3.2.0:tree (default-cli) @
relocation-messages ---
[INFO] com.topdesk.maven.test:relocation-messages:jar:0.0.1-SNAPSHOT
[INFO] \- com.lowagie:itext-rtf:jar:2.1.7:compile
[INFO] \- org.bouncycastle:bctsp-jdk14:jar:1.46:compile
[INFO] +- org.bouncycastle:bcprov-jdk14:jar:1.46:compile
[INFO] \- org.bouncycastle:bcmail-jdk14:jar:1.46:compile
{code}
> Superfluous relocation warning messages
> ----------------------------------------
>
> Key: MNG-7349
> URL: https://issues.apache.org/jira/browse/MNG-7349
> Project: Maven
> Issue Type: Bug
> Components: Core
> Affects Versions: 3.8.3, 3.8.4
> Reporter: Joep Weijers
> Priority: Minor
>
> In the
> [commit|https://github.com/apache/maven/commit/a1ba33069fad1fb9c6e9cd458ad233ff3a74aadd]
> that solved MNG-7253, the check for relocations was moved from the
> DefaultProjectDependenciesResolver to the DefaultArtifactDescriptorReader.
> This means that the relocation messages are not only shown on project
> dependencies, but on any artifact that is read.
> This may lead to unfixable WARNINGS in the output if a plugin transitively
> uses a relocated artifact.
> This can be reproduced by calling {{mvn dependency:tree}} with a simple,
> empty {{{}pom.xml{}}}. This will give the following warning:
> {code:java}
> [WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to
> xml-apis:xml-apis:jar:1.0.b2
> {code}
> The default maven-dependency-plugin version is 2.8 and it depends on
> {{{}org.apache.maven.reporting:maven-reporting-impl:2.0.5{}}}, which depends
> on {{commons-validator:commons-validator:1.2.0}} which depends on
> {{{}xml-apis:xml-apis:2.0.2{}}}.
> In this particular case, updating to a recent maven-dependency-plugin version
> solves the issue. But since the transitive dependencies of plugins are not
> under the control of the end users, I don't think this warning should be
> shown.
> *Workaround:*
> Stay on Maven 3.8.2 or disable logging on the DefaultArtifactDescriptorReader:
> {code:java}
> -Dorg.slf4j.simpleLogger.log.org.apache.maven.repository.internal.DefaultArtifactDescriptorReader=error
> {code}
> Although this disables all relocation messages, including the ones you might
> be interested in.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)