都說 roller 在國外是二次開發博客系統的首選,但是下載源代碼之后發現是它是基于 netbeans 項目結構開發的。平時用習慣了 Eclipse ,所以想搬到 MyEclipse 上面,但沒有想到居然那么不容易,折騰了整整一天,才最終跑起來。網上的參考信息太少,大概都是那二三篇的轉貼,全部結合起來就差不多可以解決,借此總結一下,希望用到的朋友有參考作用!
1.? 準備環境
MyEclipse ?6.0
JDK ??????1.6.0_05
Tomcat ????5.5.27 (建議用 5.5 以上版本)
Roller???? ?4.0.1
2.? 下載 Roller
從 Roller 的主頁 http://roller.apache.org/ 下載最新的 roller 版本,目前是 4.0.1 ,同時下載源代碼包和官筆發布程序包的 zip ,分別為 apache-roller-src-4.0.1.zip 和 apache-roller-4.0.1.zip 。
下載發布程序的原因是源源代碼包里有一些內容和發布包不一致,導致源代碼在 Eclipse 中編譯后在運行時會報錯,因為對源代碼不熟悉,所以還無法定位到錯誤的原因所在。另外一些配置文件只有在它官方的發布包中才有,一會要用到它。
3.? 搭建項目環境
在 MyEclipse 中新建一個 Web 項目,命名為 roller , J2EE 環境選擇 1.4 。
解壓縮 roller 的二個包,為了說明的方便,我們把 apache-roller-src-4.0.1.zip 的解壓縮后目錄叫做 roller-src ,把 apache-roller-4.0.1.zip 的解壓縮后目錄叫做 roller-bin 。
① 把 roller-src/apps/weblogger/src/java 目錄下的 org 整個目錄的源文件復制到項目中的 src 里面;
② 向 lib 中添加 jar 文件。二種方法,可以從 roller-src 中的 tools 目錄中逐個目錄地把所有的 jar 文件拷貝出來,為了簡單起見,還是從它的發布程序中直接拿更方便,從 roller-bin 中的 WEB-INF/lib 下面的所有 jar 都復制出來,放到我們的項目中的 lib 中去;
③ roller 默認是使用 MySQL 數據庫,但是 lib 里面缺少 MySQL 的 JDBC 驅動,所以還要自己從網上下載驅動的 jar ,添加到 WEB-INF/lib 中,如果你是使用的其它數據庫,同樣需要手動下載它對應的驅動程序;
④ 從 roller-bin 中復制除了 WEB-INF 目錄以外的所有文件,粘貼到我們項目中的 WebRoot 下面,這些是頁面文件和一些資源文件;
⑤ 復制 roller-bin 中的 WEB-INF 目錄下除了 classes 外的所有文件到我們項目中的 WEB-INF 目錄下,覆蓋掉默認的 web.xml ,你還可以發現它的一些 jsp 文件是放在 WEB-INF 下面的,起到很好的保護作用, roller 是基于 struts2 開發的;
⑥ 從 roller-bin 中的 WEB-INF/classes 目錄中,復制除了 org 目錄外的所有文件,到我們項目中的 src 里面,這些是系統的配置文件,包括了國際化資源、 struts 配置、 log 配置、數據庫腳本等等。
⑦ roller 還用到了郵件功能,需要把 activation.jar , mail.jar 二個 j2ee 的 jar 復制到 tomcat 的 common/lib 目錄下,如果沒有這一步,可能啟動初始化會失敗!導致應用無法正常運行。
到這里,所有的文件就已經全部搬到 MyEclipse 上面了,接下來要修改一些內容使用我們的項目能正常部署。
4.? 修改部分內容
① 在我們項目的 src 中新建一個名稱為 roller-custom.properties 的文件, roller 采用這個擴展配置現覆蓋系統的默認配置。網上有些說要把這個文件放到 tomcat 的 common/classes 中,其實不用的,只要放在 classpath 中能找到就行了,所以我們把它放在我們的 src 目錄下面,方便修改,在該文件中添加如下內容:
installation.type=auto
database.configurationType=jdbc
database.jdbc.driverClass=com.mysql.jdbc.Driver
database.jdbc.connectionURL=jdbc:mysql://localhost:3306/rollerdb?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8
database.jdbc.username=scott
database.jdbc.password=tiger
mail.configurationType=properties
mail.hostname=smtp-server.example.com
mail.username=scott
mail.password=tiger
注意 database.jdbc.connectionURL 這個配置后面需要帶上上面編碼的參數,不然安裝的過程可能會出現一些亂碼。修改 url 和 username , password 這些,如果你有能正常使用的郵箱服務器,也填上。
②
創建
MySQL
數據庫,名稱為
rollerdb
,并指定編碼為
UTF-8
。如果你使用的是
root
用戶,則不用授權,如果不是,則需要為用戶授權,下面是一個示例:
????
啟動 roller 的時候它會查詢數據庫是否已經初始完成,如果沒有,它會自動進入安裝頁面,引導用戶進行安裝,做得非常人性化。
③
修改部分源代碼。
org.apache.roller.weblogger
包里面的
pojos
包是有問題的!剛開始的時候老是無法啟動,報錯提示的是
JPA
的一個異常,根本不知道如何解決,后來在
CSDN
上找到一篇文章,說是
pojos
這個包的源碼有問題,可能跟發布包中的版本不一致,所以需要用變態一點的處理辦法。
????
在我們的項目 WEB-INF/lib 中,找到 roller-business.jar 和 roller-web.jar (如上圖所示),這二個 jar 其實就是我們 src 中的所有 java 文件的編譯打包,為了不重復,先把 roller-web.jar 刪除掉,然后用 winrar 打開 roller-business.jar ,刪除 pojos 以外的其它四個包和那個 WebloggerException.class 。這樣,其它代碼可以正常編譯!
下面是最終的基本結構截圖 ( 僅參考 ) :
5.? 其它補充說明
按照上面的步驟,項目結構就基本上正常搭建了,真是費心費力! NetBeans 下面沒有試過,興許會比這個簡單許多!反正都習慣 Eclipse 了,就都移過,后面再花些時間研讀一下它的源代碼,網上說是非常好的學習例子。
??????? ① Roller 的系統全局配置文件是放在 org.apache.roller.weblogger. org.apache.roller.weblogger.config 包中的 roller.properties 中的。在這里能找到各項系統的配置,我們自己手動創建的 roller-custom.properties 是用來覆蓋一些常用屬性的。
??????? ② src 下面的 dbscripts 是所有數據庫的 SQL 腳本, apache-roller-src-4.0.1.zip 中提供的腳本是不完整的!所以需要使用正式發布包的腳本,它帶了數據庫的初始腳本,由系統自動引導創建,還有許多版本升級的補充腳本。
??????? ③ 默認的 log 配置是用文件形式,保存在 tomcat 的的 logs 目錄中,名稱為 roller.log 的,如果你啟動的過程遇到問題,請到這里去查看啟動日志,分析一下異常的原因。
??????? ④ roller-custom.properties 中配置的郵箱主機和用戶名密碼等,如果無法正常連接,它初始化時會報錯,但是不會影響正常啟動,前提是你必須把 activation.jar , mail.jar 這二個文件放到 tomcat 里面。
???????
⑤
在調試的過程中發現
org.apache.roller.weblogger.business.WebloggerImpl
類的創建方法中有加載
roller-verion.properties
,但是在我們的
src
中沒有找到這個文件,原來是在
roller-business.jar
中包含了。好像另一個類也包含這一句啟動的初始代碼,如果找不到這個類,會拋出空指針
Exception
,同樣導致整個應用啟動失敗。所以剛開始的時候生硬地在
WebloggerImpl
類中
115
行加載了一段異常處理代碼如下:
????
??????? 當然,如果你已經包含了 roller-version.properties 文件,這個異常是不會存在的 !
??????? ⑥ Roller 的文檔非常齊全,圖文并茂,多多閱讀,就可以了解它的使用方法。 IBM 開發者論壇就是基于它進行開發的,的確非常強大,想了解 struts2 、 JPA 、 Spring 、 Acegi 、 Velocity 等主流技術的都可以從這里找到示例,不過要多花些時間,從其它方面,比如結構劃分、代碼規范、 theme 切換等,都可以學習到很多東西。
??????? ⑦ Roller Architecture (摘自網絡)
Roller Web : Web and UI Layer
* ???? Editor UI via Struts and JSP , blog and feed rendering via Velocity
* ???? Feed parsing via ROME, Blogger API via Apache XML-RPC
Roller Beans : Business and Persistence Layer
*
????
Hibernate/JPA for DBMS
,
Lucene for search
多多學習,愿和大家共同分享!
^_^
?這里打包一個PDF文件提供下載
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
