我是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字段为空。看到错误,我尝试自己添加这种依赖。它显示如下: 问题是,为什么对于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中的项目一起出现?
答案 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会尝试每天下载一次,以便在让您保持最新并且不浪费时间等待下载之间取得良好的平衡。