【发布时间】:2022-04-13 18:49:36
【问题描述】:
我们正在使用 maven-dependency-plugin 从我们的 nexus 获取 ZIP 以供以后使用。我们这样做是因为它是使用集成的 maven-user 处理从我们受保护的关系中下载的最简单方法。
当使用 maven-dependency-plugin 时,它会下载 Struts 1.3.8 作为 Dependency。
在旧版本的插件中这是正常的,因为它是插件的传递依赖: https://maven.apache.org/plugins-archives/maven-dependency-plugin-3.1.2/dependencies.html
在当前版本中它已被删除:https://maven.apache.org/plugins-archives/maven-dependency-plugin-3.2.0/dependencies.html 这是通过从 org.apache.maven.doxia:doxia-site-renderer:jar:1.9 更新到 org.apache.maven.doxia:doxia-site-renderer:jar:1.9.2 (1.9.2 不包括struts依赖)
仍然使用插件下载struts,我不知道为什么。
我尝试使用最新的 Maven (3.8.3) 并将其缩小为一个简单的命令:
mvn org.apache.maven.plugins:maven-dependency-plugin:3.2.0:get -DgroupId=commons-lang -DartifactId=commons-lang -Dversion=2.6 -Dmaven.repo.local=repo
使用“repo”作为存储库文件夹下载旧的 commons-lang 依赖项。如果您检查下载日志或文件夹,它将包含“org/apache/struts/....”。
我还用一个简单的 pom.xml 进行了测试:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>test-dep-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.9.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>get</id>
<phase>validate</phase>
<goals>
<goal>get</goal>
</goals>
<configuration>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
<transitive>false</transitive>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
您可以尝试“mvn clean verify”来运行它。这会导致同样的问题。我更新了“站点”插件,因为它在旧版本中也有一个 struts 依赖项。
我还尝试使用以下方法检查插件依赖项:mvn dependency:resolve-plugins
这并没有给我任何 struts 依赖项。 maven 的某些部分似乎仍然需要它们。如果我删除 maven-dependency-plugin,它们就消失了。
如何摆脱所有(过时和不需要的)struts 依赖项?
【问题讨论】:
-
在检查了对 struts-taglib 的依赖似乎是由 doxia-site-renderer 定义的,与 struts 部分的排除相矛盾......这真的很奇怪......首先我会建议创建一个问题条目 (issues.apache.org/jira/projects/MDEP) 并将示例添加为工作项目...
-
另外问题是:struts依赖有什么问题?
-
我们从我们的管理团队收到安全问题,因为 struts 1.x 已在 2013 年结束生命。通过在我们的构建中使用它,我们可以在 Nexus、Jenkins、本地机器上获得 struts 文件, ... 而且我也不知道为什么 maven 依赖项的插件需要一个 web 框架。
-
看起来已经有问题了:issues.apache.org/jira/browse/MDEP-765(同样的错误,不同的 maven 目标)
-
看起来这是通过
maven-reporting-impl进来的,它使用 doxia 1.7
标签: java maven maven-plugin maven-dependency-plugin