Maven 依赖项插件无法解析插件的手动指定依赖项

2024-04-30

我遇到了一个问题maven-dependency-plugin(Maven版本3.2.3, maven-dependency-plugin版本2.10)。我正在尝试引入插件依赖项。我创建了一个简单的项目:

<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.sze</groupId>
    <artifactId>mvn-project</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.2</version>
            </plugin>
        </plugins>
    </build>
</project>

我选择了maven-antrun-plugin版本1.2,因为这个插件及其依赖项在Maven 官方插件配置指南 https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_dependencies_Tag。然后我运行一个命令来解决它的依赖关系:

mvn dependency:resolve-plugins

输出:

[INFO] Plugin Resolved: maven-antrun-plugin-1.2.jar
[INFO]     Plugin Dependency Resolved: maven-plugin-api-2.0.1.jar
[INFO]     Plugin Dependency Resolved: maven-project-2.0.1.jar
[INFO]     Plugin Dependency Resolved: ant-launcher-1.6.5.jar
[INFO]     Plugin Dependency Resolved: ant-1.6.5.jar

确实,我有ant and ant-launcher版本1.6.5。现在我想更改这些依赖项的版本并更改我的pom.xml:

<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.sze</groupId>
    <artifactId>mvn-project</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.2</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant</artifactId>
                        <version>1.7.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant-launcher</artifactId>
                        <version>1.7.1</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
</project>

但当我再次奔跑时mvn dependency:resolve-plugins,属于的依赖项的版本maven-antrun-plugin还是1.6.5:

[INFO] Plugin Resolved: maven-antrun-plugin-1.2.jar
[INFO]     Plugin Dependency Resolved: maven-plugin-api-2.0.1.jar
[INFO]     Plugin Dependency Resolved: maven-project-2.0.1.jar
[INFO]     Plugin Dependency Resolved: ant-launcher-1.6.5.jar
[INFO]     Plugin Dependency Resolved: ant-1.6.5.jar

我还能如何检查这些依赖项的版本是否已更改?


由于某种原因,resolve-plugins目标将not解决自定义插件依赖关系。如果你想查看实际使用了哪些插件,你必须在调试模式下运行 Maven:

mvn -X antrun:run

这将显示添加到类路径中的依赖项:

[DEBUG] org.apache.maven.plugins:maven-antrun-plugin:jar:1.2:
[DEBUG]    org.apache.ant:ant:jar:1.7.1:runtime
[DEBUG]    org.apache.ant:ant-launcher:jar:1.7.1:runtime
[DEBUG]    org.apache.maven:maven-plugin-api:jar:2.0.1:compile
[DEBUG]    org.apache.maven:maven-project:jar:2.0.1:compile
[DEBUG]       org.apache.maven:maven-profile:jar:2.0.1:compile
[DEBUG]       org.apache.maven:maven-model:jar:2.0.1:compile
[DEBUG]       org.apache.maven:maven-artifact-manager:jar:2.0.1:compile
[DEBUG]          org.apache.maven:maven-repository-metadata:jar:2.0.1:compile
[DEBUG]       org.codehaus.plexus:plexus-utils:jar:1.0.5:compile
[DEBUG]          classworlds:classworlds:jar:1.1-alpha-2:compile
[DEBUG]       org.apache.maven:maven-artifact:jar:2.0.1:compile
[DEBUG]       org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9:compile
[DEBUG]          junit:junit:jar:3.8.1:compile
[DEBUG]    ant:ant-launcher:jar:1.6.5:runtime
[DEBUG]    ant:ant:jar:1.6.5:compile

请注意,原始依赖项的组 ID 是not org.apache.ant只是ant。这将导致 Maven 包含两者ant:ant:1.6.5 and org.apache.ant:ant:1.7.1。但是,自定义依赖项将首先出现在类路径上,因此您将能够使用较新的 ant 版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven 依赖项插件无法解析插件的手动指定依赖项 的相关文章

随机推荐