Maven不会自动下载依赖项

时间:2012-08-06 03:55:54

标签: eclipse maven m2eclipse

我是Maven的首发。我从Bitbucket拉了一个java maven项目。在编译Eclipse时,Eclipse说“美国东部时间8/6/12 1:39:05:缺少工件com.tinkerpop.blueprints:blueprints-core:jar:1.0:compile”:

Maven控制台:

8/6/12 1:39:03 PM EST: Missing artifact com.tinkerpop.blueprints:blueprints-core:jar:1.0:compile
8/6/12 1:39:05 PM EST: Missing artifact com.tinkerpop.blueprints:blueprints-core:jar:1.0:compile

但是当我检查pom.xml文件时,它已经存在于依赖项列表中,只有Type和Scope字段为空。看到错误,我尝试自己添加这种依赖。它显示如下: enter image description here 问题是,为什么对于1.0版本,blueprints-core只有.pom文件而不是.jar文件?这是否意味着在远程存储库中他们不再提供1.0版本? (我发现项目中的代码回复1.0版本而不是2.0版本的蓝图框架)

#2问题是,在什么情况下Maven不会自动下载添加了依赖项的jar文件?

这是原始的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/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>edu.qut.cs</groupId>
        <artifactId>qut-recommender</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../qut-recommender/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>rcmd-common</artifactId>
    <packaging>jar</packaging>
    <name>QUT Recommender Common Library and Utilty</name>

    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>11.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>2.7.2</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.mahout</groupId>
            <artifactId>mahout-ext</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>jgrapht</groupId>
            <artifactId>jgrapht</artifactId>
            <version>0.7.3</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.tinkerpop.blueprints</groupId>
            <artifactId>blueprints-core</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>   
    </dependencies>

</project>

存在1.0版本的POM和Jar文件。下图是“C:\ Users \ n8275441.m2 \ repository \ com \ tinkerpop \ blueprints”文件夹中的目录和文件。顺便说一句,我从Bitbucket存储库中提取了这个项目。这些1.0版本文件是否可能与Bitbuckdet中的项目一起出现? enter image description here

2 个答案:

答案 0 :(得分:1)

根据您的信息并在检查maven central后,问题取决于您选择的版本。 Maven Central仅包含version 1.2, 2.0.0 and 2.1.0 but not a version 1.0。 此外,如果在pom中没有范围给出依赖:

<dependency>
  <groupId>com.tinkerpop.blueprints</groupId>
  <artifactId>blueprints-core</artifactId>
  <version>1.0</version>
</dependency>

这意味着默认范围是“编译”(在约定优于配置的意义上)。我只是建议将版本更改为2.0.0或2.1.0,这应该可以解决问题。 如果你检查编译这样的项目,我建议你先在命令行上尝试,而不是在Eclipse中。

答案 1 :(得分:1)

如果你想知道Maven Central提供什么,mvnrepository.com是你的朋友。

在这种情况下,没有1.0版本:http://mvnrepository.com/artifact/com.tinkerpop.blueprints/blueprints-core

这引出了一个有趣的问题,为什么m2e报告了一个POM文件。如果POM文件确实存在,我建议您查看硬盘。您可以在C:\Users\n8275441\.m2\repository\com\tinkerpop\blueprints\1.0\blueprints-core\

中找到(或不找到)

对于问题#2:Maven(以及m2e),将尝试仅下载一个版本(即版本中没有SNAPSHOT的版本)。如果下载失败,Maven会注意到并且再也不会尝试,因为它假设上游存储库(例如Maven Central)注意到Maven规则(所以如果一个repo没有东西,明天就不会有它)

对于快照,Maven会尝试每天下载一次,以便在让您保持最新并且不浪费时间等待下载之间取得良好的平衡。

相关问题