为什么" mvn依赖:tree"列出一个版本,但是" mvn clean install"尝试下载另一个版本?

时间:2015-09-01 02:08:44

标签: maven dependencies maven-assembly-plugin

我有一个Maven(3.2.5)项目由于缺少依赖而失败。 mvn clean install输出的相关部分:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single (package-jar-with-dependencies) on project splitter: Failed to create assembly: Failed to resolve dependencies for project: groupId1:splitter:jar:2.12.3: Missing:
[ERROR] ----------
[ERROR] 1) groupId2:location-service:jar:2.12.3

但是,mvn depdency:tree声称不需要2.12.3版本:

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ splitter ---
[INFO] groupId1:splitter:jar:2.12.3
[INFO] +- groupId2:location-service:jar:2.12.1:compile

没有列出其他location-service依赖项。

pom.xml显式调出2.12.1依赖项:

<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>
    <parent>
        <groupId>groupId2</groupId>
        <artifactId>artifactId</artifactId>
        <version>2.12.0</version>
    </parent>
    ...
    <groupId>groupId1</groupId>
    <artifactId>splitter</artifactId>
    <packaging>jar</packaging>
    <version>2.12.3</version>
    <name>splitter</name>
    <url>http://maven.apache.org</url>
    ...
    <dependencies>
        <dependency>
            <groupId>groupId2</groupId>
            <artifactId>location-service</artifactId>
            <version>2.12.1</version>
        </dependency>
        ...

有趣的是,父目录pom.xml在此目录结构中不可用(创建SVN分支的人员分支了未包含父pom.xml的存储库的一部分)。但是,Maven没有抱怨它丢失,所以它从我的~/.m2/repository目录中获取它。

1 个答案:

答案 0 :(得分:1)

对不起声望求职者,yet again我在撰写时找到了问题的解决方案。但它很复杂,可以继续发布问题和答案,以防其他人遇到类似的问题。

问题是我的pom.xml目录中的父~/.m2/repositorylocation-service依赖关系设置为${project.version}。显然,尽管模块maven-assembly-plugin中存在明确的依赖关系,但pom.xml想要下载它已经足够了。这是maven-assembly-plugin:2.2-beta-5中的错误。模块和父pom.xml都没有命名maven-assembly-plugin的显式版本。我没想到为什么maven选择下载2.2-beta-5版本,因为它甚至不接近最新版本。 mvn dependency:tree -Dverbose甚至没有提到maven-assembly-plugin。明确使用maven-assembly-plugin:2.5.5可以解决问题。