摘要:
本文討論了如何設定AppFuse所使用的Maven環境,並對Maven做了簡單介紹。
根據文章內容,可以看到本文涉及的主要是在Eclipse+Candy+maven2環境裡的設定—譯者
Maven2 (for AppFuse)新手
入門
標題:
[原創翻譯]Maven2 (for AppFuse)新手入門
[AppFuse 2.0文檔-7]
摘要:
本文討論了如何設定AppFuse所使用的Maven環境,並對Maven做了簡單介紹。
根據文章內容,可以看到本文涉及的主要是在Eclipse+Candy+maven2環境裡的設定—譯者
作者:Added by Nathan Anderson, last edited by Duncan Jauncey on Jul 10, 2007 06:04
翻譯者: 陳海青(josonchen)
(http://www.chq.name
)
(http://www.hhrz.org
)
日期:2007.10.30
英文版網址:http://appfuse.org/display/APF/
Maven+for+Newbies
中文版:
Maven入門
Added by Nathan Anderson, last edited by Duncan Jauncey on Jul 10, 2007 06:04
象我在AppFuse 1.9.x的使用過程中積累經驗一樣,本頁也是有意來記錄我在使用Maven和AppFuse 2.x使用過程中的經驗,並逐漸過渡到web應用的開發。
下面是關於我的一點介紹. 我是 Sum-Ware公司的開發主管,這就意味著我要確保其他的開發人員和網管人員有事做,同時我要去填補工作中的空白.
我
才用兩種不同的途徑學習AppFuse 2.x. 在工作時,我使用Windows+ Sun Java 1.6 + Eclipse
3.2的環境,開發"appfuse-basic-struts" 結構的項目. 在家裡,我開發另一個項目,使用Ubuntu +Sun Java
1.6 +Eclipse 3.2的環境 (這個項目也許要切換到IDEA—誰知道呢).
這個項目是基於"appfuse-modular-struts" 架構的.
我喜歡用Struts 2(至少目前如此)是因為我覺得它較簡單。我在學習過程中喜歡將變化的各類因素限制在自己能掌控的範圍內。
Targets 與 Goals
* 我注意到的第一件事是maven 的"goals"與ant的"targets"的異同。 Goals
非常酷,因為它們是通用的,可用於所有的maven項目, 但是targets更容易描述,因為他們僅存在於build.xml 檔案中
(或多或少). 在Maven 2 這篇文章裡有一張很不錯的關於常用的goals及其應用的列表.
* 即時在最初還不太會使用Maven 時,我也要說它是非常容易入門
的. 一旦完成了前期安裝 (做起來並不困難), 我在10分鐘之內就讓AppFuse運行起來了,並且其中的大部分時間是用在maven下載依賴檔案上(喝咖啡的時間
).
整合IDE
* 整合AppFuse2
.x後,Eclipse工作地很好,然而我還是遇到一些麻煩事:
o 在建立我的POJO時,我不得不花費時間清理項目,以便使Eclipse 能夠識別annotations
o 但我為項目運行命令建立M2_REPO 等時,命令也運行了,我也在項目裡看到了羅列的依賴的JAR包,但就是無法解決上述的關於annotation 的問題.
o 最後,我不得不手工添加了M2_REPO 環境變數,然後一切正常了.
* 我沒在IDEA 上使用AppFuse 2.x ,但我聽說比在Eclipse上要好.
下載依賴包(Dependency)
* 這個過程很酷同時又有些怪異.,下載時我看到了maven報告了大量的警告或錯誤資訊,但奇怪的是,一切均運行良好,以下是一些輸出資訊的例子:
· [INFO] Wrote settings to /home/nathan/src/fetch-calendar/web/.settings/org.eclipse.jdt.core.prefs
· [INFO] Wrote Eclipse project for"fetch-calendar-webapp" to /home/nathan/src/fetch-calendar/web.
· [INFO]
· Sources for some artifacts are not available.
· List of artifacts without a source archive:
· o org.apache.struts:struts2-core:2.0.6
· o commons-fileupload:commons-fileupload:1.1.1
· o opensymphony:clickstream:1.0.2
· o org.apache.struts:struts2-spring-plugin:2.0.6
· o velocity-tools:velocity-tools-view:1.0
· o javax.servlet:jsp-api:2.0
· o org.apache.struts:struts2-codebehind-plugin:2.0.6
· o freemarker:freemarker:2.3.8
· o org.tuckey:urlrewrite:2.5.2
·
· [INFO]
· [INFO]
· [INFO] ------------------------------------------------------------------------
· [INFO] Reactor Summary:
· [INFO] ------------------------------------------------------------------------
· [INFO] AppFuse Modular Application ........................... SUCCESS [6.338s]
· [INFO] AppFuse Modular Application - Core .................... SUCCESS [57.907s]
· [INFO] AppFuse Modular Application - Web (Struts 2) .......... SUCCESS [2:20.721s]
· [INFO] ------------------------------------------------------------------------
· [INFO] ------------------------------------------------------------------------
· [INFO] BUILD SUCCESSFUL
· [INFO] ------------------------------------------------------------------------
· [INFO] Total time: 3 minutes 27 seconds
· [INFO] Finished at: Tue Apr 03 22:05:12 PDT 2007
· [INFO] Final Memory: 48M/63M
[INFO] ------------------------------------------------------------------------
怎麼會struts2-core 下載失敗呢, 然而我在運行"mvn jetty:run-war"卻一些正常? 不知該如何是好了...
好吧... 我沒話說了.我覺得可能是無法取得源碼包,但我的運行包的確是已經正確下載了. 也許有人能看到這些並能避免出現類似問題
新項目產生了
我相信自動產生新項目裡的App.java 和AppTest.java (以及modular archtypes裡的Core.java) 確有其用,但我卻不知道其用途,有人能幫我解答嗎?
Maven 的 HTTP Proxy 伺服器設定
如
果你的區域網路使用HTTP Proxy 伺服器上網 (注意,並不是Maven倉庫代理(repository
proxy),二者是有區別的),在運行maven是會看到錯誤資訊:'Error transferring file'.
解決辦法是,找到你的Proxy 伺服器的地址和連接埠,加到命令裡,格式為: -DproxySet=true
-DproxyHost=<你的Proxy 伺服器主機地址> -DproxyPort=<代理服務的連接埠>
注意:如果你嘗試了數次均串連失敗, 那麼maven中心倉庫就會被自動列到黑名單中,使用-U 命令列參數可以進行強制串連.