尝试使用 MongoDB 编译 Nutch 2.2.1 时出错,无法从 sonar/ant/antlib.xml 加载定义

Errors when trying to compile Nutch 2.2.1 with MongoDB, could not load definitions from sonar/ant/antlib.xml

我想编译 Nutch 2.2.1 与 MongoDB 一起用于数据存储。

我在文件 ivy.xml 中将 gora-core 更改为 0.5:

<dependency org="org.apache.gora" name="gora-core" rev="0.5" conf="*->default"/>

还在 ivy/ivy.xml 文件中添加了 mongodb 的依赖项:

<dependency org="org.apache.gora" name="gora-mongodb" rev="0.5" conf="*->default" />

在 conf/gora.properties:

中添加了 mongodb 配置
############################
# MongoDBStore properties  #
############################
gora.datastore.default=org.apache.gora.mongodb.store.MongoStore
gora.mongodb.override_hadoop_configuration=false
gora.mongodb.mapping.file=/gora-mongodb-mapping.xml
gora.mongodb.servers=localhost:27017
gora.mongodb.db=nutch

将 gora-mongodb-mapping.xml 添加到 Nutch-2.3-SNAPSHOT 的 conf 目录。

当我尝试编译时出现错误:

Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.

之后我遇到了很多编译器错误。

当我尝试使用 MySQL 配置和编译 Nutch 时,每个编译和工作都很完美。

我正在尝试在 Debian 上编译。

抛出错误是因为其中一个类路径中不存在声纳 jar(参见 build.xml, line 883

<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
    <classpath path="${ant.library.dir}"/>
    <classpath path="${mysql.library.dir}"/>
</taskdef>

看起来可以安全地忽略该警告,因为它仅在 运行 "sonar" 目标时才需要。

一个简单的解决方案是在 "sonar" 目标内移动 taskdef。这样可以避免错误消息。

我建议提出一个 JIRA 问题来解决这个问题。

更正此错误后,我又得到了一个 ;-)。经过研究,我发现用 Gora 0.5 编译 Nutch 2.2.1 是不可能使用 MongoDB (gora-mongodb rev=0.5).

我克隆了Nutch 2.3 并编译成功。