﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-City of Dream</title><link>http://www.blogjava.net/shenlei/</link><description>实践出真知</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 12:36:40 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 12:36:40 GMT</pubDate><ttl>60</ttl><item><title> SSH+YUI+JSON的Web结构</title><link>http://www.blogjava.net/shenlei/archive/2008/09/19/230031.html</link><dc:creator>萧少英</dc:creator><author>萧少英</author><pubDate>Fri, 19 Sep 2008 14:55:00 GMT</pubDate><guid>http://www.blogjava.net/shenlei/archive/2008/09/19/230031.html</guid><wfw:comment>http://www.blogjava.net/shenlei/comments/230031.html</wfw:comment><comments>http://www.blogjava.net/shenlei/archive/2008/09/19/230031.html#Feedback</comments><slash:comments>29</slash:comments><wfw:commentRss>http://www.blogjava.net/shenlei/comments/commentRss/230031.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shenlei/services/trackbacks/230031.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/shenlei/archive/2008/09/19/230031.html'>阅读全文</a><img src ="http://www.blogjava.net/shenlei/aggbug/230031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shenlei/" target="_blank">萧少英</a> 2008-09-19 22:55 <a href="http://www.blogjava.net/shenlei/archive/2008/09/19/230031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]Appfuse使用经验杂谈——安装部署篇 </title><link>http://www.blogjava.net/shenlei/archive/2008/02/29/182885.html</link><dc:creator>萧少英</dc:creator><author>萧少英</author><pubDate>Fri, 29 Feb 2008 04:53:00 GMT</pubDate><guid>http://www.blogjava.net/shenlei/archive/2008/02/29/182885.html</guid><wfw:comment>http://www.blogjava.net/shenlei/comments/182885.html</wfw:comment><comments>http://www.blogjava.net/shenlei/archive/2008/02/29/182885.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/shenlei/comments/commentRss/182885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shenlei/services/trackbacks/182885.html</trackback:ping><description><![CDATA[<div class="postText">Appfuse是一个融合当前各种框架的web应用最佳实践。从名字可以看出：App=框架应用，fuse=熔合。<br />
<br />
Appfuse涉及的东西较多，也大都有实用价值。这系列文会一一道来，一是分享，二是为了自己记忆得更加深刻。我觉得，任何东西说开了都很简单。所以会尽量用简单直白，使自己能看懂的叙述方式说出来。<br />
<br />
如有错误，希望大家本着共享的精神指出。谢谢！（转载请保留：<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#104;&#101;&#110;&#108;&#101;&#105;&#109;&#97;&#105;&#108;&#64;&#118;&#105;&#112;&#46;&#113;&#113;&#46;&#99;&#111;&#109;" target="_blank">shenleimail@vip.qq.com</a><wbr>）<br />
<br />
安装部署篇：<br />
<br />
Appfuse的最新版本是2.0.1，基于maven管理并发布的。因此，在安装Appfuse之前，我们需要了解maven的一些基础知识。<br />
<br />
maven的核心是对POM（Project Object Model）项目对象模型的管理。就我的理解来看，项目对象模型应该包括了依赖项（所需外部jar包）、source、resource等项目相关的对象，maven用一个生命周期的概念对它们进行管理。所以在maven的命令里面包含了发布、生成、清理、运行、删除等命令。而依赖项并不是一个项目所独有的，可能有多个项目用到同一个jar包。因此在maven的概念中依赖项又和POM互相独立。如图：<br />
<br />
<br />
<wbr><a href="http://www.foryears.com/bbs/skins/default/filetype/jpg.gif" target="_blank"><img height="16" alt="" src="http://www.foryears.com/bbs/skins/default/filetype/jpg.gif" width="16" border="0" /></a><wbr>此主题相关图片如下：<br />
<a onclick="showLinkBubble(this);return false" href="http://www.foryears.com/bbs/upload/2008-2/200822812292383610.jpg" target="_blank" link="http://www.foryears.com/bbs/upload/2008-2/200822812292383610.jpg"><wbr><a href="http://www.foryears.com/bbs/upload/2008-2/200822812292383610.jpg" target="_blank"><img height="278" alt="" src="http://www.foryears.com/bbs/upload/2008-2/200822812292383610.jpg" width="281" border="0" /></a><wbr></a><wbr><br />
<br />
理解了maven的生命周期管理，再去看它的命令和操作，都是和相应的生命期对应的。其中有一些通过插件方式实现，比如用jetty运行Appfuse，命令为：mvn jetty:run-war<br />
<br />
下面只介绍和Appfuse安装相关的maven操作：<br />
<br />
1、下载并解压maven最新版，不得低于2.0.6（假设路径为：E:\soft\maven）；<br />
<br />
2、设置环境变量：M2_HOME=E:\soft\maven，将%M2_HOME%/bin加入PATH中；<br />
<br />
3、dos模式下输入mvn -version，能看到正确的版本信息为止（可能需要重启）；<br />
<br />
安装好maven之后，需要建立本地依赖项库。到[url=https://appfuse.dev.java.net/servlets/ProjectDocumentList?folderID=8417&amp;expandFolder=8417&amp;folderID=0]https://appfuse.dev.java.net/servlets/ProjectDocumentList?folderID=8417&amp;expandFolder=8417&amp;folderID=0[/url]下载[url=https://appfuse.dev.java.net/files/documents/1397/77087/appfuse-dependencies-2.0.1-with-source-and-javadoc.zip]Dependencies (with source and javadoc)[/url] 142.83M，解压到某个地方。<br />
<br />
到E:\soft\maven\conf中打开setting.xml文件，在&lt;settings&gt;节点下加入&lt;localRepository&gt;你解压的路径&lt;/localRepository&gt;。<br />
<br />
到此为止，准备工作已完成。<br />
<br />
新建一个目录，准备安放Appfuse项目工程。例如为：D:\Project\appfuse2.0.1<br />
<br />
在dos模式下进入此目录，确保在线的情况下运行如下命令（这里以Spring MVC Basic为例，如要其他类型，请参考Appfuse官方文档）：<br />
<br />
mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0.1 -DgroupId=com.webstudio.app -DartifactId=appfuse-spring<br />
<br />
com.webstudio.app及appfuse-spring这两个变量是可以修改的。com.webstudio.app表示项目根路径，appfuse-spring表示项目名称及新建的文件夹名称。<br />
<br />
运行过程中，会看到一系列的waring警告，不用管。等看到：Builde Success，表示成功了。maven会在D:\Project\appfuse2.0.1下新建appfuse-spring目录，里面含有最重要的pom.xml文件。<br />
<br />
修改pom.xml，在最下面有数据库的配置。若你是mysql数据库，则很简单，只需修改用户名和密码（默认为root和空）。若是其他数据库，请参照pom.xml里面的数据库配置文件进行替换修改。<br />
<br />
修改好之后，在dos模式下进入D:\Project\appfuse2.0.1\appfuse-spring，运行mvn appfuse:full-source。这也是个很快的过程。<br />
<br />
之后，在相同的路径下执行：mvn jetty:run-war。jetty是一个jsp容器（类似Tomacat），以jar包的形式跟随项目发布，方便部署。此命令会打包生成appfuse-spring-1.0-SNAPSHOT.war并测试发布，在测试时会有一些异常信息。不用理会，只是一些测试数据没有准备好。<br />
<br />
等到一切就绪（出现[INFO] Starting scanner at interval of 3 seconds.），打开你的浏览器，输入<a onclick="showLinkBubble(this);return false" href="http://locathost:8080/" target="_blank" link="http://locathost:8080">http://locathost:8080</a><wbr>。如果看到Appfuse的登录页面，那么恭喜你，你已经顺利的安装了Appfuse。maven是个不错的工具，但我们不能用maven来做所有事。软件需要部署到IDE上才有更好的开发效率，maven可以充当IDE的一个辅助工具。目前来看，我更倾向用maven管理依赖项，用IDE管理软件生命周期。<br />
<br />
eclipse和netbeans都是不错的IDE，但遗憾的是，他们的maven插件机制还有所欠缺。从表面来看，netbeans要比eclipse做得更好，因为它可以直接建立maven项目，也可以在命令中使用maven插件机制build项目（&#8220;run&#8221;始终有点问题）。但从实际来说，我更倾向eclipse的方式，只让maven管理依赖项，生命周期还是交给IDE更加方便。<br />
<br />
appfuse官网上关于如何使用IDE部署和调试项目语焉不详，只是建议以mvn jetty:run-war的方式发布。这是脱离项目实际的，很多人都习惯了在IDE中编辑和调试项目。文档中关于appfuse在eclipse的部署实践不甚令人满意，我们需要重新动手解决这一切。<br />
<br />
我的环境是：eclipse+myeclipse+tomcat6<br />
<br />
首先，用maven的方式。在项目路径下运行：mvn eclipse:eclipse建立适合eclipse环境的工程。<br />
<br />
在eclipse中导入项目，运行一次mvn jetty:run-war并确保项目已正常运行，这样会在target目录下生成部署需要的文件夹和war包。<br />
<br />
选择项目属性，在&#8220;java build path&#8221;——&#8220;source&#8221;中去掉&#8220;src/main/webapp&#8221;文件夹。<br />
<br />
在文件夹中打开项目路径下的appfuse-spring-1.0-SNAPSHOT目录，将WEB-INF/classes下的所有资源文件拷贝并覆盖到src/main/resources下，并将WEB-INF/lib复制到src/main/webapp/WEB-INF/lib中。<br />
<br />
用myeclipse的&#8220;add myeclipse web capabilities&#8221;命令建立web模块。路径指引到src/main/webapp中。在项目下新建目录webapp，采用link folder的方式链接到src/main/webapp。这样可以让webapp在最上层，方便编辑。<br />
<br />
用myeclipse将webapp发布到tomcat中，还需要注意一个问题，不能把所有依赖jar包都发布，否则会引起包冲突。在这里选择项目属性——Myeclise——Web——Deployment——Libirary Deployment Policies中去掉所有勾。<br />
<br />
现在eclipse中运行tomcat，不出意外就顺利部署成功了。这种方式保留了采用maven发布和在eclipse中发布两种方式，在激活eclipse的maven插件后，也能用maven来管理依赖项。<br />
<br />
对于netbaens，个人建议采用普通的web应用方式部署，将刚才在eclipse中部署好的文件一一对应拷贝过去即可。不建议用netbeans的maven插件进行部署，因为那实在不大好用。<br />
<br />
安装部署篇就到这里，下一篇正式进入Appfuse的世界。<br />
<br />
........to be continue<img id="paperPicArea1" style="display: none; position: relative" alt="" src="http://imgcache.qq.com/qzone_v4/b.gif" /> </div>
 <img src ="http://www.blogjava.net/shenlei/aggbug/182885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shenlei/" target="_blank">萧少英</a> 2008-02-29 12:53 <a href="http://www.blogjava.net/shenlei/archive/2008/02/29/182885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>