【问题标题】:maven-dependeny-plugin 3.2.0 downloading struts 1.3.8maven-dependency-plugin 3.2.0 下载 struts 1.3.8
【发布时间】: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


【解决方案1】:

maven-dependency-plugin 3.3.0 的更新似乎解决了这个问题。

执行时 mvn org.apache.maven.plugins:maven-dependency-plugin:3.3.0:get -DgroupId=commons-lang -DartifactId=commons-lang -Dversion=2.6 -Dmaven.repo.local=repo repo 文件夹中没有 struts 依赖项。

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多