首先需要說明的是,Pentaho BI Server源代碼在svn://source.pentaho.org/svnroot/bi-platform-v2/trunk/,并且用ivy建構。ivy沒有用過也不熟悉,故不打算從這裡使用ivy建構源碼。
将biserver-ce-3.9.0-stable.zip解壓之後執行biserver-ce/start-pentaho.bat(或是再linux環境下:biserver-ce/start-pentaho.sh),即可成功啟動biserver。現在我想将這個工程導入到eclipse然後調式跟蹤代碼,怎麼做呢?
以下操作是在eclipse3.7+tomcat 6.20的環境中進行的。
在eclipse中建立一個web項目,名稱為pentaho,然後将biserver-ce/tomcat/webapps下的<code>pentaho-style</code>和<code>sw-style</code>拷貝到你的tomcat 6伺服器的webapps目錄下,将pentaho檔案下的所有檔案拷貝到工程下的WebContent目錄下。由于biserver需要通路pentaho-solutions下的檔案,故還需要修改<code>WEB-INF/web.xml</code>檔案你的以下配置,用于指定pentaho-solutions的路徑:
現在即可部署項目,運作<code>biserver-ce/data/start_hypersonic.bat</code>(用于啟動資料庫),然後啟動tomcat,就可以通過http://localhost:8080/pentaho通路biserver。如果啟動報錯,需要将hsqldb-1.8.0.7.jar包,拷貝到應用路徑下(\tomcat-pci-test\biserver-ce\tomcat\webapps\pentaho\WEB-INF\lib)。
現在可以看到biserver的登入頁面,但是還是沒有看到biserver的源代碼。
接下來,建構源代碼。 在biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib下面有很多名稱為pentaho-bi-platform-########-3.9.0-stable.jar的jar檔案,這些即是biserver源碼編譯之後的class檔案。在bi-platform-3.9.0-stable-sources.zip壓縮檔案你即可以看到這些class檔案的源代碼。将這些src包解壓然後拷貝到之前建立的pentaho工程的src目錄下。
需要注意的是: 1.這些src jar包你隻報告java檔案,不包括配置檔案:log4j配置檔案,hibernate配置和實體映射檔案,ehcache配置檔案
2.上面的配置檔案需要到biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib目錄下的pentaho-bi-platform-########-3.9.0-stable.jar檔案中尋找。
3. * biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib/pentaho-bi-platform-engine-security-3.9.0-stable.jar檔案中有ldap的配置檔案, * biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib/pentaho-bi-platform-engine-services-3.9.0-stable.jar檔案中有ehcache的配置檔案, * biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib/pentaho-bi-platform-plugin-actions-3.9.0-stable.jar檔案中有log4j的配置檔案, * biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib/pentaho-bi-platform-repository-3.9.0-stable.jar檔案中有hibernate配置檔案, * biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib/pentaho-bi-platform-security-userroledao-3.9.0-stable.jar檔案中有hibernated的實體映射檔案。
4.biserver-ce-3.9.0-stable.zip的lib(<code>biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib</code>)目錄下的servlete jar包的版本為2.3,版本過低需要替換為更高版本知道源碼中不在有servlete編譯錯誤