1 nutch bin目錄結構
圖1 nutch release包的目錄結構
1) bin目錄:主要含有2個可執行文件crawl和nutch腳本,其中crawl腳本只是nutch腳本的wrapper,提供了all-in-one(一站式)形式的調用方式,通過限定相對於種子url的相對深度的方式來結束爬取循環,本質上是逐個調用nutch腳本中的各個tool。
2) conf:含有nutch所有的配置文件,比較常用的是nutch-default.xml,nutch-site.xml和parse-plugins.xml文件。
3) docs:API doc文檔。
4) lib:nutch運行時依賴包,不包含plugins需要的運行時依賴。
5) plugins:插件目錄,nutch內置47種插件,其中nutch-extensionpoints插件,是nutch加插件機制運行機制的核心。
2 nutch源碼目錄結構
圖2 nutch src包的目錄結構
1) conf:同release的conf。
2) ivy:使用ivy管理nutch的依賴,ivy相關的配置文件位置。
3) lib:同release的lib。
4) src/bin:同release的bin。
5) src/java:nutch除了plugins以外的源碼所在的位置,按照package組織。
6) src/test:nutch單元測試代碼的位置,按package組織。
7) src/testresources:nutch單元測試資源文件位置。
8) plugins:插件源碼位置。
3 nutch的編譯
nutch採用ant編譯,使用lvy管理項目依賴。執行anteclipse生成eclipse所需要的.classpath和.project文件;執行ant deploy會生成maven項目,會在nutch的根目錄下生成pom文件。這樣就可以直接使用IDE import“existing project”或者是“existing maven project”(如果是採用maven編譯的話,則需要修改maven-compiler-plugin的source和target屬性爲1.6版本以上,以支持Annotation@Override,避免編譯錯誤)。注意:nutch的plugin項目並沒有maven化,故也沒有作爲nutch maven project的module。
3.1 FAQ
編譯階段可能會出現的問題如下:
1) Unsupported Java version: 1.6.x_xx. Javadoc requires Java version 7u25or greater.,由於frame injection相關的問題,nutch的編譯腳本在調用javadoc命令生成項目的API文檔之前,會檢查系統JDK的版本,如果是JDK7u25之前的版本會終止build過程。升級成該版本以上的JDK即可。或者註釋掉<fail>段的腳本(該方法本人未驗證)。
2) failed to create task or typeantlib:org.apache.maven.artifact.ant:mvn。該問題是由於ant在運行時找不到mavenant task相關的jar包造成的,可以到http://maven.apache.org/ant-tasks/download.cgi下載最新的maven-ant-tasks-x.x.x.jar,然後放到$ANT_HOME/lib目錄下即可(爲了升級方便,linux下也可以將jar包移動到公共位置,在上述位置建立符號鏈接即可)