摘要:
本文讨论了如何设置AppFuse所使用的Maven环境,并对Maven做了简单介绍。
根据文章内容,可以看到本文涉及的主要是在Eclipse+Candy+maven2环境里的设置—译者
Maven2 (for AppFuse
)新手入门
标题:
[原创翻译
]Maven2 (for AppFuse)新手入门[AppFuse 2.0文档-7]
摘要:
本文讨论了如何设置AppFuse所使用的Maven环境,并对Maven做了简单介绍。
根据文章内容,可以看到本文涉及的主要是在Eclipse+Candy+maven2环境里的设置—译者
翻译者: 陈海青(josonchen)
日期:2007.10.30
英文版网址
:
http://appfuse.org/display/APF/ Maven+for+Newbies
中文版:
Maven入门
象我在
AppFuse 1.9.x
的使用过程中积累经验一样,本页也是有意来记录我在使用
Maven
和
AppFuse 2.x
使用过程中的经验,并逐渐过渡到
web
应用的开发。
我才用两种不同的途径学习
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工作地很好,然而我还是遇到一些麻烦事:
- 在建立我的POJO时,我不得不花费时间清理项目,以便使Eclipse 能够识别annotations
- 但我为项目运行命令建立M2_REPO 等时,命令也运行了,我也在项目里看到了罗列的依赖的JAR包,但就是无法解决上述的关于annotation 的问题.
- 最后,我不得不手工添加了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
代理服务器设置
如果你的局域网使用
HTTP
代理服务器上网
(
注意,并不是
Maven
仓库代理
(repository proxy),
二者是有区别的
)
,在运行
maven
是会看到错误信息:
'Error transferring file'.
解决办法是,找到你的代理服务器的地址和端口,加到命令里,格式为
: -DproxySet=true -DproxyHost=<
你的代理服务器主机地址
> -DproxyPort=<
代理服务的端口
>
注意
:
如果你尝试了数次均连接失败
,
那么
maven
中心仓库就会被自动列到黑名单中,使用
-U
命令行参数可以进行强制连接
.