`

Nutch package 下的build.xml解读

阅读更多
花了很多时间来读这个build.xml,并不是这个包不好读,相反可读性非常强,这就是xml的好处.自己花了很多的时间

去熟悉ant!从Ant的task,type,nested element等一点一点读起.这样整个nutch的配置结构,我就了解的更加清楚了.

解下来的任务就是继续熟悉一下Javacc这个软件,在读一下它的api文档,下来的工作就是修改nutch了.

将build.xml的内容粘于此处.

<?xml version='1.0' encoding='GBK'?>
   <!--如果出现汉字,请使用GBK编码-->

<project name="Nutch" default="compile">

<!--修改意见-->
<!--可以写一个deploy模块,把war文件拷贝到tomcat/webapps下面去,这部分文中没有涉及-->
  <!-- Load all the default properties, and any the user wants    -->
  <!-- to contribute (without having to type -D or edit this file -->
  <!--没有找到build.properties??-->
  <!--properry为task-->
  <property file="${user.home}/build.properties" />
  <property file="${basedir}/build.properties" />
  <property file="${basedir}/default.properties" />

  <!-- the normal classpath -->
   <!--build.classes下含有lib.dir下的所有的jar文件-->
  <!--path-like structure,定义classpath-->
  <path id="classpath">
    <pathelement location="${build.classes}"/>
    <!--fileset为type-->
    <fileset dir="${lib.dir}">
      <include name="*.jar" />
    </fileset>
  </path>

  <!-- the unit test classpath -->
  <!--dirname为Task-->
  <dirname property="plugins.classpath.dir" file="${build.plugins}"/>
  <path id="test.classpath">
    <pathelement location="${test.build.classes}" />
    <pathelement location="${conf.dir}"/>
    <pathelement location="${test.src.dir}"/>
    <pathelement location="${plugins.classpath.dir}"/>
    <!--使用前面定义的classpath-->
    <path refid="classpath"/>
  </path>

  <!-- xmlcatalog definition for xslt task -->
  <!--使用xmlcatalog type定义docDTDs-->
  <xmlcatalog id="docDTDs">
     <dtd publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"           
          location="${xmlcatalog.dir}/xhtml1-transitional.dtd"/>
  </xmlcatalog>

  <!-- ====================================================== -->
  <!-- Stuff needed by all targets                            -->
  <!-- ====================================================== -->
  <target name="init">
    <!--mkdir为task,创建用于build和test的目录-->
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes}"/>

    <mkdir dir="${test.build.dir}"/>
    <mkdir dir="${test.build.classes}"/>
   
    <!--将conf.dir中对应格式的文件修改时间设为datetime-->
    <touch datetime="01/25/1971 2:00 pm">
      <fileset dir="${conf.dir}" includes="**/*.template"/>
    </touch>

    <copy todir="${conf.dir}" verbose="true">
      <fileset dir="${conf.dir}" includes="**/*.template"/>
      <!--mapper为type,将*.template转为*-->
      <mapper type="glob" from="*.template" to="*"/>
    </copy>


  </target>

  <!-- ====================================================== -->
  <!-- Compile the Java files                                 -->
  <!-- ====================================================== -->
  <target name="compile" depends="compile-core, compile-plugins, jar"/>

  <target name="compile-core" depends="init">
    <!--将生成的class文件存入build/classes-->
    <javac
     encoding="${build.encoding}"
     srcdir="${src.dir}"
     includes="org/apache/nutch/**/*.java"
     destdir="${build.classes}"
     debug="${debug}"
     optimize="${optimize}"
     deprecation="${deprecation}">
      <!--使用已经定义的classpath-->
      <classpath refid="classpath"/>
    </javac>   
  </target>

  <target name="compile-plugins">
    <!--执行src/plugin下面的build.xml,并且执行其中的deploytarget,不继承property-->
    <ant dir="src/plugin" target="deploy" inheritAll="false"/>
  </target>

  <target name="generate-src" depends="init">
    <!--使用javacc命令-->
    <javacc target="${src.dir}/org/apache/nutch/quality/dynamic/PageDescription.jj"
            javacchome="${javacc.home}">
    </javacc>
    <!--对NutchAnalysis.jj运行javacc,我们修改分词需要修改此接口-->
    <javacc target="${src.dir}/org/apache/nutch/analysis/NutchAnalysis.jj"
            javacchome="${javacc.home}">
    </javacc>
    <!--CR即为carriage(回车),LF即为Line Feed(换行)即将src.dir下的匹配文件eof以lf代替-->
    <fixcrlf srcdir="${src.dir}" eol="lf" includes="**/*.java"/>

  </target>

  <target name="dynamic" depends="generate-src, compile">
  </target>


  <!-- ================================================================== -->
  <!-- Make nutch.jar                                                     -->
  <!-- ================================================================== -->
  <!--                                                                    -->
  <!-- ================================================================== -->
  <target name="jar" depends="compile-core">
    <!--将conf目录下的nutch-default.xml和nutch-site.xml拷入build文件目下-->
    <copy file="${conf.dir}/nutch-default.xml"
          todir="${build.classes}"/>
    <copy file="${conf.dir}/nutch-site.xml"
          todir="${build.classes}"/>
    <!--将build/classes下的文件打包成jar-->
    <jar
      jarfile="${build.dir}/${final.name}.jar"
      basedir="${build.classes}"
    />
    <!--将生成的nutch-0.7.jar拷贝到根目录下命名为nutch.jar-->
    <copy file="${build.dir}/${final.name}.jar" tofile="${basedir}/${name}.jar" />
  </target>

  <!-- ================================================================== -->
  <!-- Make nutch.war                                                     -->
  <!-- ================================================================== -->
  <!--                                                                    -->
  <!-- ================================================================== -->
  <target name="war" depends="compile,generate-docs">
    <!--war是一个task,将里面包含的所有的东西打包成一个war文件,如果需要修改前台的界面包括
    nutch的logo等等,都要提前修改其中的一些图片,界面.最后打好包放到tomcat中-->
    <war destfile="${build.dir}/${final.name}.war"
  webxml="${web.src.dir}/web.xml">
      <fileset dir="${web.src.dir}/jsp"/>
      <zipfileset dir="${docs.src}" includes="include/*.html"/>
      <zipfileset dir="${build.docs}" includes="*/include/*.html"/>
      <fileset dir="${docs.dir}"/>
      <lib dir="${lib.dir}">
<include name="lucene*.jar"/>
<include name="taglibs-*.jar"/>
<include name="dom4j-*.jar"/>
<include name="xerces-*.jar"/>
      </lib>
      <lib dir="${build.dir}">
<include name="${final.name}.jar"/>
      </lib>
      <classes dir="${conf.dir}" excludes="**/*.template"/>
      <classes dir="${web.src.dir}/locale"/>
      <zipfileset prefix="WEB-INF/classes/plugins" dir="${build.plugins}"/>
      <webinf dir="${lib.dir}">
<include name="taglibs-*.tld"/>
      </webinf>
    </war>
   </target>


  <!-- ================================================================== -->
  <!-- Compile test code                                                  -->
  <!-- ================================================================== -->
  <target name="compile-core-test" depends="compile-core">
    <javac
     encoding="${build.encoding}"
     srcdir="${test.src.dir}"
     includes="org/apache/nutch/**/*.java"
     destdir="${test.build.classes}"
     debug="${debug}"
     deprecation="${deprecation}">
     <!--使用先前定义的test.classpath-->
      <classpath refid="test.classpath"/>
    </javac>   
  </target>

  <!-- ================================================================== -->
  <!-- Run unit tests                                                     -->
  <!-- ================================================================== -->
  <target name="test" depends="test-core, test-plugins"/>

  <target name="test-core" depends="compile, compile-core-test">

    <delete dir="${test.build.data}"/>
    <mkdir dir="${test.build.data}"/>
    <!--使用nutch-site.xml-->
    <copy file="${test.src.dir}/nutch-site.xml"
          todir="${test.build.classes}"/>
    <!--junit为一个task,支持nested element,譬如sysproperty,formatter,batchtest-->
    <junit printsummary="yes" haltonfailure="no" fork="yes" dir="${basedir}"
      errorProperty="tests.failed" failureProperty="tests.failed">
      <sysproperty key="test.build.data" value="${test.build.data}"/>
      <sysproperty key="test.src.dir" value="${test.src.dir}"/>
      <classpath refid="test.classpath"/>
      <formatter type="plain" />
      <batchtest todir="${test.build.dir}" unless="testcase">
        <fileset dir="${test.src.dir}"
                 includes="**/Test*.java" excludes="**/${test.exclude}.java" />
      </batchtest>
      <batchtest todir="${test.build.dir}" if="testcase">
        <fileset dir="${test.src.dir}" includes="**/${testcase}.java"/>
      </batchtest>
    </junit>
    <!--fail为task-->
    <fail if="tests.failed">Tests failed!</fail>

  </target>  

  <target name="test-plugins" depends="compile">
    <ant dir="src/plugin" target="test" inheritAll="false"/>
  </target>

  <target name="nightly" depends="test, tar">
  </target>

  <!-- ================================================================== -->
  <!-- Documentation                                                      -->
  <!-- ================================================================== -->
  <target name="javadoc" depends="compile">
    <mkdir dir="${build.javadoc}"/>
    <!--javadoc为task,支持nested element,譬如packageset,link,group-->
    <javadoc
      overview="${src.dir}/overview.html"
      destdir="${build.javadoc}"
      author="true"
      version="true"
      use="true"
      windowtitle="${Name} ${version} API"
      doctitle="${Name} ${version} API"
      bottom="Copyright &amp;copy; ${year} The Apache Software Foundation"
      >
     <packageset dir="${src.dir}"/>
     <packageset dir="${plugins.dir}/protocol-file/src/java"/>
     <packageset dir="${plugins.dir}/protocol-ftp/src/java"/>
        <packageset dir="${plugins.dir}/protocol-http/src/java"/>
        <packageset dir="${plugins.dir}/protocol-httpclient/src/java"/>
     <packageset dir="${plugins.dir}/parse-html/src/java"/>
     <packageset dir="${plugins.dir}/parse-js/src/java"/>
     <packageset dir="${plugins.dir}/parse-text/src/java"/>
     <packageset dir="${plugins.dir}/parse-pdf/src/java"/>
<!-- <packageset dir="${plugins.dir}/parse-rtf/src/java"/> plugin excluded from build due to licensing issues-->
<!-- <packageset dir="${plugins.dir}/parse-mp3/src/java"/> plugin excluded from build due to licensing issues-->
     <packageset dir="${plugins.dir}/parse-msword/src/java"/>
     <packageset dir="${plugins.dir}/index-basic/src/java"/>
     <packageset dir="${plugins.dir}/index-more/src/java"/>
     <packageset dir="${plugins.dir}/query-more/src/java"/>
     <packageset dir="${plugins.dir}/urlfilter-regex/src/java"/>
     <packageset dir="${plugins.dir}/urlfilter-prefix/src/java"/>
     <packageset dir="${plugins.dir}/creativecommons/src/java"/>
     <packageset dir="${plugins.dir}/languageidentifier/src/java"/>
     <packageset dir="${plugins.dir}/clustering-carrot2/src/java"/>
     <packageset dir="${plugins.dir}/ontology/src/java"/>
        <link href="${javadoc.link.java}"/>
        <link href="${javadoc.link.lucene}"/>
        <classpath refid="classpath"/>
     <classpath>
      <fileset dir="${plugins.dir}" >
       <include name="**/*.jar"/>
      </fileset>
     </classpath>
     <group title="Core" packages="org.apache.nutch.*"/>
     <group title="Plugins" packages="${plugins.packages}"/>
    </javadoc>
  </target>

  <target name="default-doc">
    <!--style即xslt命令,使用xsl文件解析xml-->
    <style basedir="${conf.dir}" destdir="${docs.dir}"
           includes="nutch-default.xml" style="conf/nutch-conf.xsl"/>
  </target>

  <target name="generate-locale" if="doc.locale">
    <echo message="Generating docs for locale=${doc.locale}"/>

    <mkdir dir="${build.docs}/${doc.locale}/include"/>
    <xslt in="${docs.src}/include/${doc.locale}/header.xml"
          out="${build.docs}/${doc.locale}/include/header.html"
          style="${docs.src}/style/nutch-header.xsl">
        <xmlcatalog refid="docDTDs"/>
    </xslt>

    <dependset>
       <srcfileset dir="${docs.src}/include/${doc.locale}" includes="*.xml"/>
       <srcfileset dir="${docs.src}/style" includes="*.xsl"/>
       <targetfileset dir="${docs.dir}/${doc.locale}" includes="*.html"/>
    </dependset> 

    <copy file="${docs.src}/style/nutch-page.xsl"
          todir="${build.docs}/${doc.locale}"
          preservelastmodified="true"/>

    <xslt basedir="${docs.src}/pages/${doc.locale}"
          destdir="${docs.dir}/${doc.locale}"
          includes="*.xml"
          style="${build.docs}/${doc.locale}/nutch-page.xsl">
         <xmlcatalog refid="docDTDs"/>
    </xslt>
  </target>


  <target name="generate-docs" depends="init">
    <dependset>
       <srcfileset dir="${docs.src}/include" includes="*.html"/>
       <targetfileset dir="${docs.dir}" includes="**/*.html"/>
    </dependset> 

    <mkdir dir="${build.docs}/include"/>
    <copy todir="${build.docs}/include">
      <fileset dir="${docs.src}/include"/>
    </copy>
     <!--antcall为task,调用generate-locale,并将相应的参数传递过去-->
    <antcall target="generate-locale">
      <param name="doc.locale" value="ca"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="de"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="en"/>
    </antcall>
   
    <antcall target="generate-locale">
      <param name="doc.locale" value="es"/>
    </antcall>
   
    <antcall target="generate-locale">
      <param name="doc.locale" value="fi"/>
    </antcall>
   
    <antcall target="generate-locale">
      <param name="doc.locale" value="fr"/>
    </antcall>
   
    <antcall target="generate-locale">
      <param name="doc.locale" value="hu"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="jp"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="ms"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="nl"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="pl"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="pt"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="sv"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="th"/>
    </antcall>

    <antcall target="generate-locale">
      <param name="doc.locale" value="zh"/>
    </antcall>

    <fixcrlf srcdir="${docs.dir}" eol="lf" encoding="utf-8"
             includes="**/*.html"/>

  </target>

  <!-- ================================================================== -->
  <!-- D I S T R I B U T I O N                                            -->
  <!-- ================================================================== -->
  <!--                                                                    -->
  <!-- ================================================================== -->
  <!--将所有的东西,包括.jar,.war等文件都拷贝到dist目录中-->
  <target name="package" depends="jar, war, javadoc">
    <mkdir dir="${dist.dir}"/>
    <mkdir dir="${dist.dir}/lib"/>
    <mkdir dir="${dist.dir}/bin"/>
    <mkdir dir="${dist.dir}/docs"/>
    <mkdir dir="${dist.dir}/docs/api"/>
    <mkdir dir="${dist.dir}/plugins"/>

    <copy todir="${dist.dir}/lib" includeEmptyDirs="false">
      <fileset dir="lib"/>
    </copy>

    <copy todir="${dist.dir}/plugins">
      <fileset dir="${build.plugins}"/>
    </copy>

    <copy file="${build.dir}/${final.name}.jar" todir="${dist.dir}"/>

    <copy file="${build.dir}/${final.name}.war" todir="${dist.dir}"/>

    <copy todir="${dist.dir}/bin">
      <fileset dir="bin"/>
    </copy>

    <copy todir="${dist.dir}/conf">
      <fileset dir="${conf.dir}" excludes="**/*.template"/>
    </copy>

    <chmod perm="ugo+x" type="file">
        <fileset dir="${dist.dir}/bin"/>
    </chmod>

    <copy todir="${dist.dir}/docs">
      <fileset dir="${docs.dir}"/>
    </copy>

    <copy todir="${dist.dir}/docs/api">
      <fileset dir="${build.javadoc}"/>
    </copy>

    <copy todir="${dist.dir}">
      <fileset dir=".">
        <include name="*.txt" />
      </fileset>
    </copy>

    <copy todir="${dist.dir}/src" includeEmptyDirs="false">
      <fileset dir="src"/>
    </copy>

    <copy todir="${dist.dir}/" file="build.xml"/>
    <copy todir="${dist.dir}/" file="default.properties"/>

  </target>

  <!-- ================================================================== -->
  <!-- Make release tarball                                               -->
  <!-- ================================================================== -->
  <!--打包成压缩文件-->
  <target name="tar" depends="package">
    <tar compression="gzip" longfile="gnu"
      destfile="${build.dir}/${final.name}.tar.gz">
      <tarfileset dir="${build.dir}" mode="664">
<exclude name="${final.name}/bin/*" />
        <include name="${final.name}/**" />
      </tarfileset>
      <tarfileset dir="${build.dir}" mode="755">
        <include name="${final.name}/bin/*" />
      </tarfileset>
    </tar>
  </target>

  <!-- ================================================================== -->
  <!-- Clean.  Delete the build files, and their directories              -->
  <!-- ================================================================== -->
  <target name="clean">
    <delete dir="${build.dir}"/>
    <delete failonerror="true" file="${name}.jar" />
  </target>

</project>

分享到:
评论
1 楼 koubi1986 2013-08-20  
你好!请教一些问题:
请问一下
1。你是如何把nutch抓取到的二进制内容,在项目中读取的。
2。nutch抓取时候,发现有很多url没有被成功抓取过来,请问你做的时候,有什么   办法是提高成功率。
3。对抓取过来内容你们是如何进行关键词搜索

希望群主可以帮忙解答一下。万分感激!
email:83132614@qq.com

相关推荐

    nutch配置nutch-default.xml

    nutch配置nutch-default.xml

    Nutch_的配置文件

    - 接着,`NutchConfiguration`会调用`addNutchResources(conf)`方法,向`Configuration`对象添加Nutch自己的配置资源,如`Nutch-default.xml`和用户定义的`Nutch-site.xml`,这里的`Nutch-site.xml`会覆盖`Nutch-...

    apache-nutch-2.3.1-src.tar.gz

    2. **build.xml**: Ant 构建文件,用于编译、测试和打包 Nutch 项目。通过运行 Ant 命令,你可以构建和定制 Nutch。 3. **README.txt**: 提供了关于 Nutch 的基本介绍和安装指南,包括如何编译、配置以及运行 Nutch...

    nutch2.2.1安装步骤.docx

    找到 `/home/nutch/apache-nutch-2.2.1/ivy/ivy.xml` 文件,这里可能需要调整 Gora 和 MySQL 的依赖版本,确保与你的 MySQL 驱动版本兼容。例如,添加 `mysql-connector-java` 依赖项,以便 Nutch 可以连接到 MySQL ...

    Nutch入门.rar

    1.1什么是nutch..1 1.2研究nutch的原因...1 1.3 nutch的目标..1 1.4 nutch VS lucene.....2 2. nutch的安装与配置.....3 2.1 JDK的安装与配置.3 2.2 nutch的安装与配置........5 2.3 tomcat的安装与配置........

    Lucene+Nutch搜索引擎开发.王学松源代码

    《Lucene+Nutch搜索引擎开发:王学松源代码解析》 在信息技术日新月异的今天,搜索引擎已经成为了人们获取信息的重要工具。Lucene和Nutch是两个在开源社区广泛使用的搜索引擎技术,它们为开发者提供了构建高效、可...

    nutch爬虫系统分析.doc

    Nutch的配置文件是XML格式的文件,用于存储Nutch的配置信息。配置文件包括: * crawl-urlfilter-plugin.xml:用于配置抓取规则。 * crawl-generator-plugin.xml:用于配置生成抓取任务的规则。 * crawl-fetch-...

    nutch 初学文档教材

    1.1什么是nutch..1 1.2研究nutch的原因...1 1.3 nutch的目标..1 1.4 nutch VS lucene.....2 2. nutch的安装与配置.....3 2.1 JDK的安装与配置.3 2.2 nutch的安装与配置........5 2.3 tomcat的安装与配置......5 3. ...

    windows下nutch的安装.pdf

    bin/nutch org.apache.nutch.searcher.NutchBean -searcher.dir /path/to/searcher /path/to/queryfile ``` 整个Nutch安装和运行过程涉及很多命令和参数,文档中还提到一些配置文件和参数的详细配置,包括但不限于:...

    apache-nutch-1.3-src.tar.gz_nutch_nutch-1.3.tar.gz

    Apache Nutch 是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引,以便进行全文搜索。Nutch 1.3 是该项目的一个稳定版本,提供了许多关键功能和改进。这个源码包 "apache-nutch-1.3-src.tar.gz" 和 ...

    Nutch中文教程nutcher.zip

    nutcher 是 Apache Nutch 的中文教程,在github上托管。nutch社区目前缺少教程和文档,而且教程对应版本号较为落后。nutcher致力于为nutch提供一个较新的中文教程和文档,供开发者学习。 github地址: ...

    Linux下Nutch分布式配置和使用.rar

    这是本人在完全分布式环境下在Cent-OS中配置Nutch-1.1时的总结文档,但该文档适合所有Linux系统和目前各版本的nutch。 目 录 介绍 ............................................................... 2 0 集群...

    apache-nutch-1.6-src.tar.gz

    主要的源代码文件位于`src/java`目录下,按照包结构组织,例如`org.apache.nutch.crawl`、`org.apache.nutch.indexer`和`org.apache.nutch.parse`等。 2. **配置文件**:在`conf`目录下,有默认的Nutch配置文件,如...

    nutch2.2.1的org.restlet和org.restlet.ext.jackson包

    这时会Build失败,查看原因发现是因为没有org.restlet和org.restlet.ext.jackson包(因为前面ivy.xml无法解析,所以注释掉了),因此这时可以到网上下载这两个包文件,并添加到项目中。

    nutch入门实例教程.pdf

    - **配置文件修改**: 修改 `conf/nutch-site.xml` 文件以适应本地环境。 - **启动服务**: 使用提供的脚本启动 Nutch 相关服务。 #### 3. Nutch 初体验 - **爬行企业内部网**: - **配置 Nutch**: 设置抓取规则、...

    毕业论文-nutch爬虫系统分析.doc

    配置文件如`conf/nutch-site.xml`定义了各种参数,包括抓取策略、下载设置、解析规则、索引设置等。通过对这些配置文件的调整,可以定制Nutch的行为以适应特定的抓取任务。 总的来说,Nutch爬虫系统通过其复杂的...

    apache-nutch-1.7-src.tar.gz

    Nutch的配置主要通过`conf`目录下的文件完成,如`nutch-site.xml`定义了项目的配置参数,`regex-urlfilter.txt`和`fetcher.conf`分别用于URL过滤和抓取设置。 为了运行Nutch,你需要搭建一个Hadoop环境,因为Nutch...

    nutch 搜索模块流程.doc

    首先,Nutch 的搜索模块位于 `nutch.searcher` 包下,它包含了实现搜索功能的所有类和接口。在实际应用中,通常会通过一个简单的 Java 主程序或 Web 应用来调用这些功能。文档中提到的 `nutchjsp` 可能是指一个简单...

    apache-nutch-1.4-bin.tar.gz

    2. **配置**:编辑conf/nutch-site.xml文件,设置如存储路径、抓取间隔、抓取范围等相关参数。 3. **创建种子**:在conf/urls目录下创建种子文件,列出要开始抓取的初始URL。 4. **运行Nutch**:使用bin/nutch命令行...

Global site tag (gtag.js) - Google Analytics