0

我是Maven的初学者。我从 Bitbucket 中提取了一个 java maven 项目。编译项目时 Eclipse 说“8/6/12 1:39:05 PM EST: Missing artifact 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 字段为空。看到错误,我尝试自己添加此依赖项。它显示如下: 在此处输入图像描述 #1 问题是,为什么对于 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 中的项目一起出现吗? 在此处输入图像描述

4

2 回答 2

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 将尝试每天下载一次,以便在保持最新状态和不浪费时间等待下载之间取得良好的平衡。

于 2012-08-06T08:12:01.987 回答
1

根据您的信息并在检查 maven Central 后,问题取决于您选择的版本。Maven Central 仅包含1.2、2.0.0 和 2.1.0 版本,但不包含 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 中进行第一次尝试。

于 2012-08-06T07:28:00.257 回答