构建Nutch插件:类依赖

时间:2015-04-14 15:29:26

标签: java ant nutch

我使用不同的扩展点(例如Protocol,Parser等)编写了一些Nutch插件。这些插件在eclipse中完美运行。但是为了在hadoop集群上使用它们,它应该使用ANT构建。我的问题是,我在核心文件夹(src)中的一些新包中写了一些类。这些类是跨不同开发的插件共享的。我的问题是在开发插件的构建时,ANT找不到提到的共享类,所以我无法成功完成构建过程。为了更好地理解我的问题,这是我的一个插件的build.xml:

<project name="filter-news" default="jar-core">

  <import file="../build-plugin.xml"/>

    <!-- Build compilation dependencies -->
        <target name="deps-jar">
          <ant target="jar" inheritall="false" dir="../lib-xml"/>
        </target>

        <!-- Add compilation dependencies to classpath -->
        <path id="plugin.deps">
          <fileset dir="${nutch.root}/build">
            <include name="**/lib-xml/*.jar" />
          </fileset>
        </path>

        <!-- Deploy Unit test dependencies -->
  <!-- Deploy Unit test dependencies -->

  <!-- for junit test -->

</project>

的ivy.xml:

<ivy-module version="1.0">
  <info organisation="org.apache.nutch" module="${ant.project.name}">
    <license name="Apache 2.0"/>
    <ivyauthor name="Apache Nutch Team" url="http://nutch.apache.org"/>
    <description>
        Apache Nutch
    </description>
  </info>

  <configurations>
    <include file="../../..//ivy/ivy-configurations.xml"/>
  </configurations>

  <publications>
    <!--get the artifact from our module name-->
    <artifact conf="master"/>
  </publications>

  <dependencies>
<dependency org="mysql" name="mysql-connector-java" rev="5.1.31"/>
<dependency org="net.sourceforge.htmlcleaner" name="htmlcleaner" rev="2.2"/>
<dependency org="commons-jxpath" name="commons-jxpath" rev="1.3"/>

  </dependencies>

</ivy-module>

plugin.xml中:

<plugin id="filter-news" name="Apache Nutch XML/HTML Parser/Indexing Filter" version="1.4" provider-name="nutch.org">

    <runtime>
        <library name="filter-news.jar">
            <export name="*"/>
        </library>
        <library name="ant-1.7.0.jar"/>
        <library name="ant-launcher-1.7.0.jar"/>
        <library name="jdom-1.1.jar"/>
        <library name="commons-jxpath-1.3.jar"/>
        <library name="htmlcleaner-2.2.jar"/>
        <library name="mysql-connector-java-5.1.31.jar"/>
    </runtime>

    <requires>
        <import plugin="nutch-extensionpoints"/>
    </requires>

    <extension id="org.apache.nutch.parse" name="Nutch XML/HTML Html parser filter" point="org.apache.nutch.parse.HtmlParseFilter">
        <implementation id="com.ictcert.nutch.filter.news.NewsHtmlFilter"                       class="com.ictcert.nutch.filter.news.NewsHtmlFilter" />
    </extension>
    <extension id="org.apache.nutch.indexer" name="Nutch XML/HTML Indexing Filter" point="org.apache.nutch.indexer.IndexingFilter">
        <implementation id="com.ictcert.nutch.filter.news.NewsIndexingFilter" class="com.ictcert.nutch.filter.news.NewsIndexingFilter"/>
    </extension>

</plugin>

当我尝试构建这个插件时,ant找不到与com.ictcert.nutch包有关的所有类依赖项,它位于nutch(src)的核心部分。而对于位于org.apache.nutch的其他课程,我没有这样的问题。您能否告诉我我的配置有什么问题,ANT可以找到默认包但新的包不能。

1 个答案:

答案 0 :(得分:0)

据我所知,实现ID应该与扩展点具有相同的包结构。你可以尝试一下,看看它是否解决了你的问题。