Tapestry 5.3.2 开发环境搭建——小例子

Tapestry 5.3.2 开发环境搭建——小例子(tapestry5.3.2+eclipse+Jetty/tomcat)

分类: Tapestry   1119人阅读  评论(4)  收藏  举报


以前用的是tapestry3.0.4版,现在看看tapestry最新版都5.3.2了,那就在本机搭个环境看看吧。话不多说,先确保本机装了 eclipse和maven。然后大家和我一起go on...

 

 

下面我们搭建一个tapestry5.3.2的小例子:

在这个例子中,我们使用  com.example 作为group id,使用 quickstart 作为artifact id, 版本使用1.0-SNAPSHOT ,使用com.example.app 作为基础源码包。

上面四个值,除了版本不要改,其他的都可以自己命名。

 

 

1、先下载代码


先确定要开始的工作目录,假设是E:\workspace。

到这个目录下面输入命令:

 

[python]  view plain copy
 
  1. mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org  

这个命令帮助我们从网上下载例子。

在执行过程中需要根据提示进行选择和输入:依次输入

提示选择例子类型,输入  1;

提示选择tapestry的版本号,输入6,或者直接回车

提示输入groupId,输入com.example

提示输入artifact id,输入quickstart

提示输入版本,回车

提示输入包,输入com.example.app

确认信息,输入Y或者直接回车

静静的等待,当界面出现BUILD SUCCESS,那么就ok了,例子就下载下来了,在E:\workspace\quickstart目录下面。

操作过程如下面:

 

 

[python]  view plain copy
 
  1. E:\workspace> mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org  
  2. [INFO] Scanning for projects...  
  3. [INFO] Searching repository for plugin with prefix: 'archetype'.  
  4. [INFO] ------------------------------------------------------------------------  
  5. [INFO] Building Maven Default Project  
  6. [INFO]    task-segment: [archetype:generate] (aggregator-style)  
  7. [INFO] ------------------------------------------------------------------------  
  8. [INFO] Preparing archetype:generate  
  9. [INFO] No goals needed for project - skipping  
  10. [INFO] [archetype:generate {execution: default-cli}]  
  11. [INFO] Generating project in Interactive mode  
  12. [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)  
  13. Choose archetype:  
  14. 1: http://tapestry.apache.org -> org.apache.tapestry:quickstart (Tapestry 5 Quickstart Project)  
  15. 2: http://tapestry.apache.org -> org.apache.tapestry:tapestry-archetype (Tapestry 4.1.6 Archetype)  
  16. Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 1  
  17. Choose version:   
  18. 15.0.19  
  19. 25.1.0.5  
  20. 35.2.6  
  21. 45.3  
  22. 55.3.1  
  23. 65.3.2  
  24. Choose a number: 66  
  25. Define value for property 'groupId': : com.example  
  26. Define value for property 'artifactId': : quickstart  
  27. Define value for property 'version':  1.0-SNAPSHOT: :   
  28. Define value for property 'package':  com.example: : com.example.app   
  29. Confirm properties configuration:  
  30. groupId: com.example  
  31. artifactId: quickstart  
  32. version: 1.0-SNAPSHOT  
  33. package: com.example.app  
  34.  Y: :   
  35. [INFO] ----------------------------------------------------------------------------  
  36. [INFO] Using following parameters for creating project from Archetype: quickstart:5.3.2  
  37. [INFO] ----------------------------------------------------------------------------  

 

在上面运行过程中,如果在选择例子类型之前就出现执行异常。如下:

 

[python]  view plain copy
 
  1. E:\workspace>mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.or  
  2. g  
  3. [INFO] Scanning for projects...  
  4. [INFO] Searching repository for plugin with prefix: 'archetype'.  
  5. [INFO] ------------------------------------------------------------------------  
  6. [INFO] Building Maven Default Project  
  7. [INFO]    task-segment: [archetype:generate] (aggregator-style)  
  8. [INFO] ------------------------------------------------------------------------  
  9. [INFO] Preparing archetype:generate  
  10. [INFO] No goals needed for project - skipping  
  11. [INFO] [archetype:generate {execution: default-cli}]  
  12. [INFO] Generating project in Interactive mode  
  13. [WARNING] Error reading archetype catalog http://tapestry.apache.org  
  14. java.lang.RuntimeException: java.lang.NullPointerException  
  15.         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1006)  
  16.         at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:2203)  
  17.         at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:382)  
  18.         at org.apache.maven.wagon.providers.http.LightweightHttpWagon.fillInputData(LightweightHttpWagon.java:115)  

这个是因为你的网络有问题,无法访问它的网站下载,没关系,给maven配置一个代理就行了。

 

配置文件位置:<<maven安装目录>>\conf\settings.xml

修改代理信息如下:

 

[html]  view plain copy
 
  1. <proxy>  
  2.   <id>optional</id>  
  3.   <active>true</active>  
  4.   <protocol>http</protocol>  
  5.   <username></username>  
  6.   <password></password>  
  7.   <host>218.189.26.158</host>  
  8.   <port>8080</port>  
  9.   <nonProxyHosts>local.net|some.host.com</nonProxyHosts>  
  10. </proxy>  

这个配置里面的ip:port是我从网上找的,可能在一段时期内有效,如果不能用,你也可以找其他的代理ip。

 

 

 

2、运行例子

例子都下载下来了,有点迫不及待了吧,那我们开始运行吧。

为了本机开发方便,官方推荐使用jetty运行程序。很简单:

进入E:\workspace\quickstart目录。敲入命令:

 

[python]  view plain copy
 
  1. E:\workspace\quickstart>mvn jetty:run  
静静等待,当界面出现下面信息

 

 

[python]  view plain copy
 
  1.                           TranslatorSource: DEFINED  
  2.                                TypeCoercer: REAL  
  3.                                 URLEncoder: DEFINED  
  4.                          UpdateListenerHub: DEFINED  
  5.                     ValidateBindingFactory: DEFINED  
  6.              ValidationConstraintGenerator: DEFINED  
  7.                 ValidationDecoratorFactory: DEFINED  
  8.                             ValidatorMacro: DEFINED  
  9.                         ValueEncoderSource: DEFINED  
  10.   
  11. 86.77% unrealized services (164/189)  
  12.   
  13. Application 'app' (version 1.0-SNAPSHOT-DEV) startup time: 703 ms to build IoC R  
  14. egistry, 2,109 ms overall.  
  15.   
  16.  ______                  __             ____  
  17. /_  __/__ ____  ___ ___ / /_______ __  / __/  
  18.  / / / _ `/ _ \/ -_|_-</ __/ __/ // / /__ \  
  19. /_/  \_,_/ .__/\__/___/\__/_/  \_, / /____/  
  20.         /_/                   /___/  5.3.2 (development mode)  
  21.   
  22.   
  23. 2012-04-19 14:17:57.484::INFO:  Started SelectChannelConnector@0.0.0.0:8080  
  24. [INFO] Started Jetty Server  

那么就说明服务启起来了,可以通过

 

http://localhost:8080/quickstart/进行访问了。哈哈。打开的页面是不是很漂亮。。。哈哈

 

对了,如果要停止jetty执行,那么按ctrl+c吧

 

PS:执行的过程中会下载很多jar包,如果网络有问题,提示出错,某文件没下载下来,那就重新执行上面的命令,重新下载。

 

3、在eclipse里面运行例子

怎么在eclipse里面浏览例子或者运行呢?分两步:

步骤一:先让maven帮你生成eclipse所需要的工程配置文件吧(.classpath and .project)。

输入命令,如下:

 

[python]  view plain copy
 
  1. E:\workspace\quickstart>mvn eclipse:eclipse -DdownloadSources=true  

静静等待,当界面出现:

 

 

[python]  view plain copy
 
  1. [INFO] ------------------------------------------------------------------------  
  2. [INFO] BUILD SUCCESSFUL  
  3. [INFO] ------------------------------------------------------------------------  
  4. [INFO] Total time: 4 seconds  
  5. [INFO] Finished at: Thu Apr 19 11:20:59 CST 2012  
  6. [INFO] Final Memory: 17M/30M  
  7. [INFO] ------------------------------------------------------------------------  

那就ok了。

 

你就可以从eclipse里面导入(import)一个已经存在的java工程了。这个大家都知道了吧。

 

步骤二:在eclipse里面运行

先给eclipse装一个插件RunJettyRun插件。如下:

Tapestry 5.3.2 开发环境搭建——小例子_第1张图片

下载地址:http://run-jetty-run.googlecode.com/svn/trunk/updatesite

选择1.3

 

插件装完之后,继续配置工程的运行方式

Tapestry 5.3.2 开发环境搭建——小例子_第2张图片

配完之后点击Run,就可以运行了。

(开发环境中为了得到更好的运行性能和错误报告:可以在第二页参数页Arguments,添加虚拟机的运行参数  -XX:MaxPermSize=256M -Xmx600m -Dtapestry.execution-mode=development )

 

4、在tomcat里面运行例子

为了能在tomcat里面运行,我是这么做的:

Tapestry 5.3.2 开发环境搭建——小例子_第3张图片

如上图,在E:\workspace\quickstart\src\main\webapp\WEB-INF下面建两个目录classes和lib

classes里面放置E:\workspace\quickstart\src\main\java编译后的class和E:\workspace\quickstart\src\main\resources下面的资源。保留层次结构不变。

lib里面放置工程依赖的jar包,多一点没关系,进测试可以如下:

 

[python]  view plain copy
 
  1. E:\workspace\quickstart\src\main\webapp\WEB-INF\lib>dir  
  2.  驱动器 E 中的卷是 Work  
  3.  卷的序列号是 9027-D637  
  4.   
  5.  E:\workspace\quickstart\src\main\webapp\WEB-INF\lib 的目录  
  6.   
  7. 2012-04-18  16:59    <DIR>          .  
  8. 2012-04-18  16:59    <DIR>          ..  
  9. 2012-04-17  00:52           199,418 antlr-runtime-3.3-sources.jar  
  10. 2012-04-17  00:37           163,650 antlr-runtime-3.3.jar  
  11. 2012-04-17  00:52           102,254 commons-codec-1.5-sources.jar  
  12. 2012-04-17  00:37            73,098 commons-codec-1.5.jar  
  13. 2012-04-17  00:53           495,186 javassist-3.12.1.GA-sources.jar  
  14. 2012-04-17  00:39           644,148 javassist-3.12.1.GA.jar  
  15. 2012-04-17  00:53            10,928 javax.inject-1-sources.jar  
  16. 2012-04-17  00:38             2,497 javax.inject-1.jar  
  17. 2012-04-17  00:51           813,521 js-1.6R7.jar  
  18. 2012-04-17  00:53           343,300 log4j-1.2.14-sources.jar  
  19. 2010-07-07  14:11           367,444 log4j-1.2.14.jar  
  20. 2012-04-17  00:53           739,203 plastic-5.3.2-sources.jar  
  21. 2012-04-17  00:38           489,767 plastic-5.3.2.jar  
  22. 2012-04-17  00:53            45,038 slf4j-api-1.6.1-sources.jar  
  23. 2012-04-17  00:38            25,496 slf4j-api-1.6.1.jar  
  24. 2012-04-17  00:53             9,549 slf4j-log4j12-1.6.1-sources.jar  
  25. 2012-04-17  00:38             9,753 slf4j-log4j12-1.6.1.jar  
  26. 2012-04-17  00:52         2,464,253 tapestry-core-5.3.2-sources.jar  
  27. 2012-04-17  00:37         1,843,136 tapestry-core-5.3.2.jar  
  28. 2012-04-17  00:53            36,782 tapestry-func-5.3.2-sources.jar  
  29. 2012-04-17  00:38            60,203 tapestry-func-5.3.2.jar  
  30. 2012-04-17  00:52           415,402 tapestry-ioc-5.3.2-sources.jar  
  31. 2012-04-17  00:38           521,902 tapestry-ioc-5.3.2.jar  
  32. 2012-04-17  00:52            24,466 tapestry-json-5.3.2-sources.jar  
  33. 2012-04-17  00:37            20,449 tapestry-json-5.3.2.jar  
  34. 2012-04-17  01:01             6,695 tapestry-yuicompressor-5.3.2-sources.jar  
  35. 2012-04-17  00:50            10,640 tapestry-yuicompressor-5.3.2.jar  
  36. 2012-04-17  00:53            20,050 tapestry5-annotations-5.3.2-sources.jar  
  37. 2012-04-17  00:38            11,146 tapestry5-annotations-5.3.2.jar  
  38. 2011-10-03  13:28           853,404 yuicompressor-2.4.7.jar  
  39.               31 个文件     12,799,446 字节  
  40.                2 个目录 17,060,093,952 可用字节  

 

那么在tomcat的控制台里面配置:

Context Path (required): /quickstart    
WAR or Directory URL: E:\workspace\quickstart\src\main\webapp

或者到tomcat的配置文件<<tomcat安装目录>>\conf\server.xml里面配置:

<Context path="/quickstart" docBase="E:\workspace\quickstart\src\main\webapp"></Context>

好了,到这里tomcat里面也运行起来了。

 

到这里,结束了。

不过截止到今天(4月19日)上面的步骤还不是尽善尽美,因为上面工程依赖的一个jar包不是最新,运行的时候会报错,可能你现在阅读这篇文章的时候已经是更新后不报错了。

怎么解决报错?

首先报错部分信息如下:

 

[python]  view plain copy
 
  1. [ERROR] AssetsModule.ResourceMinimizer Exception minimizing 'core' JavaScript stack, for locale en, resources=classpath:org/apache/tapestry5/underscore_1_1_7.js, classpath:org/apache/tapestry5/scriptaculous_1_9_0/prototype.js, classpath:org/apache/tapestry5/scriptaculous_1_9_0/scriptaculous.js, classpath:org/apache/tapestry5/scriptaculous_1_9_0/effects.js, classpath:org/apache/tapestry5/t5-core.js, classpath:org/apache/tapestry5/t5-spi.js, classpath:org/apache/tapestry5/t5-prototype.js, classpath:org/apache/tapestry5/t5-init.js, classpath:org/apache/tapestry5/t5-pubsub.js, classpath:org/apache/tapestry5/t5-events.js, classpath:org/apache/tapestry5/t5-dom.js, classpath:org/apache/tapestry5/t5-console.js, classpath:org/apache/tapestry5/t5-ajax.js, classpath:org/apache/tapestry5/t5-formfragment.js, classpath:org/apache/tapestry5/t5-alerts.js, classpath:org/apache/tapestry5/tapestry.js, classpath:org/apache/tapestry5/tapestry-console.js, classpath:org/apache/tapestry5/tree.js, classpath:org/apache/tapestry5/tapestry-messages.js: java.util.EmptyStackException  
  2. java.util.EmptyStackException  
  3.     at java.util.Stack.peek(Stack.java:85)  
  4.     at com.yahoo.platform.yui.compressor.JavaScriptCompressor.getCurrentScope(JavaScriptCompressor.java:559)  
  5.     at com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSymbolTree(JavaScriptCompressor.java:1105)  
  6.     at com.yahoo.platform.yui.compressor.JavaScriptCompressor.compress(JavaScriptCompressor.java:553)  
  7.     at org.apache.tapestry5.internal.yuicompressor.JavaScriptResourceMinimizer.doMinimize(JavaScriptResourceMinimizer.java:99)  
  8.     at org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer$1.perform(AbstractMinimizer.java:67)  
  9.     at org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)  
  10.     at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)  
  11.     at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48)  
  12.     at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)  
  13.     at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47)  

到网上下载 yuicompressor-2.4.7.jar更新现有的yuicompressor-2.4.6.jar就可以解决上面的报错了。

 

 

哈哈,试试吧,祝顺利!

 

本文档内容,参考了官方文档,有不当之处请指正!谢谢!

 

你可能感兴趣的:(tapestry)