搭建maven & cometd过程

2010-3-27

近来想做个web game,需要双方持久链接,查了下资料,HTML5的websocket太遥远了得N年后才能流行,用FLASH模拟的socket又限制了没有FLASH插件的浏览器无法玩,最后研究了下comet,发现用这个实现应该靠谱,貌似WEBQQ,gmail里的gtalk,校内的站内提示和聊天都是用comet类似技术。后来找到cometd和pushlet,据说cometd更好,于是就开始捣鼓配置cometd。

配置环境这事儿,要是有有经验的人指点就好了,可以省去90%的时间,可惜没有~只能胡乱摸索。在完全不晓得maven是什么的情况下,配置这个cometd真是折腾死我了,先随便乱整费了很多时间,无果,再在eclipse下载maven插件,捣鼓半天运行不了,最后老老实实地用命令行的方式配置maven,也费了不少时间,但终于运行成功了。记下这个配置的过程,可能以后重装电脑要重新配置时有用。

目前在eclipse还是弄不好maven,运行项目时下载不到所需要的插件无法运行,我纳闷怎么在命令行就可以,在eclipse就不行,maven下载位置都是指向同一个,运行的也是同一个项目,但还是折腾不好。

配置maven

1.到http://maven.apache.org/下载maven,解压到任意一位置,以下假定maven解压地址为C:\Program Files\maven

2.配置环境变量,在变量path的值后面加上C:\Program Files\maven\bin

3.确保jdk环境配置无误:

a.检查变量path的值里有无jdk地址,例如c:\Program Files\Java\jdk1.6.0_10\bin;
b.检查变量有无变量JAVA_HOME,没有则加上,值为JDK地址

4.打开命令提示符(开始-运行-cmd),输入mvn -version检查mvn是否成功配置。

5.打开C:\Program Files\maven\conf\settings.xml,找到<pluginGroups></pluginGroups>,在里面加入<pluginGroup>org.mortbay.jetty</pluginGroup> 如果不加入这句,maven会无法找到和下载jetty,待会运行cometd时会出现这样的错误:

org.apache.maven.plugins:maven-jetty-plugin does not exist or no valid version could be found

6.maven自动下载插件等东西时默认保存在 我的文档/.m2/ 下,如果要改变这个位置,例如保存到maven目录下的down文件夹,可以在setting.xml里面加入<localRepository>/down</localRepository>。注意,目录名字不能有空格,例如c:\program files这个地址是不合法的。

配置cometd

搞定maven后就很简单了,打开cmd,照http://cometd.org/documentation/howtos/primer这上面的步骤输入:

mvn archetype:generate -DarchetypeCatalog=http://cometd.org

选择工程类型,照上述网址的说明输入一些配置信息,就新建好了一个cometd工程
此过程中maven会自动下载cometd的库

$ mvn archetype:generate -DarchetypeCatalog=http://cometd.org

Choose archetype:
1: local -> cometd-archetype-dojo-jetty6 (CometD :: Archetypes :: Dojo and Jetty6)
2: local -> cometd-archetype-jquery-jetty6 (CometD :: Archetypes :: jQuery and Jetty6)
3: local -> cometd-archetype-dojo-jetty7 (CometD :: Archetypes :: Dojo and Jetty7)
4: local -> cometd-archetype-jquery-jetty7 (CometD :: Archetypes :: jQuery and Jetty7)
Choose a number: (1/2/3/4):

Choose a number: (1/2/3/4): 3
Define value for groupId: : org.cometd.primers
Define value for artifactId: : dojo-jetty7-primer
Define value for version: 1.0-SNAPSHOT: :
Define value for package: org.cometd.primers: :
Confirm properties configuration:
jettyVersion: 7.0.1.v20091125
cometdVersion: 1.0.0
groupId: org.cometd.primers
artifactId: dojo-jetty7-primer
version: 1.0-SNAPSHOT
package: org.cometd.primers
Y: :
[INFO] BUILD SUCCESSFUL

上面的配置信息中,artifactId为这个工程的名字,假设是dojo-jetty7-primer,进入这个工程的目录:

cd dojo-jetty7-primer

再运行这个工程:

$mvn jetty:run

就可以打开http://localhost:8080/dojo-jetty7-primer看到helloworld了

另外可以到http://download.cometd.org/下载cometd,我是选择cometd-1.0.0.tgz,包含了编译后的文件,解压后进入cometd-demo目录,执行:

mvn jetty:run

即可在http://localhost:8080/下看到cometd的demo,有一个简易的聊天功能

分类:技术文章 Tags:
评论

*

*

2010年3月27日 15:36

高人物的东西,吾等仰望之。
继续看漫画去~大人家Game出来记得告诉我们哦

2010年3月27日 16:51

comet应该属于在未来会被淘汰的技术了。实现复杂,占用资源高,不过目前看是兼容性比较高的方案了。使用websocket的限制是在不支持的浏览器上只有使用flash来模拟,但是现在flash的普及度相当高,而且原生支持websocket的浏览器也会越来越多。

2010年3月27日 18:34

@empyreaner 嗯 要是大部分人电脑上的浏览器都支持websocket了,comet当然没存在的理由,但不知得过多少年才能实现。另外据说cometd占用资源不高~

2010年4月1日 11:45

打个码,期待博主的大作~~

[…] ajax裏還分出push的技術。 關於這個技術,還能往web game,不用flash的輕鬆 […]

[…] 搭建maven & cometd过程- 这个可以尝试一下maven和cometd… […]

2010年8月31日 9:45

谢谢!mg游戏平台官方网站中……

2014年2月27日 15:38

由于maven版本的限制,在现有项目上怎么使用maven呢

Baidu
sogou