首先创建一个空的应用程序。Tapestry提供了一个Maven原型(archetype,一种项目模板)来简化操作。
针对本教程,我们使用了一个干净的Eclipse版本安装,还有一个位于/users/joeuser/workspace的工作空间(workspace)。对于其它的操作系统或者本地路径,你可以需要调整一些东西。
在Eclipse中,我们会使用一个Maven原型来创建Tapestry项目的骨架。
如果有防火墙或者代理,在执行Maven的下载之前,你可能需要在Maven的settings.xml文件(一般位于主目录的.m2子文件夹中,~/m2或者C:\users\joeuser\.m2)中配置一下你的代理设置。下面是一个示例:
Settings.xml
<settings>
<proxies>
<proxy>
<active>true</active>
<protocol>http</protocol>
<host>myProxyServer.com</host>
<port>8080</port>
<username>joeuser</username>
<password>myPassword</password>
<nonProxyHosts></nonProxyHosts>
</proxy>
</proxies>
<localRepository>C:/Users/joeuser/.m2/repository</localRepository>
</settings>
当然,也要将 localRepository 对应调整成你的计算机上的正确路径。
好了,让我们来开始创建新项目。
在Eclipse中,一路选择 File > New > Project... > Maven > Maven Project
然后点击Next,在Next,然后在 Select an Archetype 页面的目录行上点击Configure按钮。Archetype选项对话框就会出现。点击 Add Remote Catalog...按钮,如下所示:
、
如上所示,在Catalog File输入框中输入“http://tapestry.apache.org”,而Description中输入“Apache Tapestry”。
如果你想尝试一下还没有正式发布的Tapestry版本(alpha或者beta),就使用 https://repository.apache.org/content/repositories/staging 这个原型目录文件。
点击OK,然后再OK。
在如下所示的Select an Archetype对话框中,选择刚刚新加的 Apache Tapestry 目录,然后从列表中选择 “quickstart”原型并点击Next。
注意:本教程中的截屏跟你在其它(或新或旧)版本的Tapestry中所看到的会不一样。
填入Group Id,Artifact Id, Version 和 Package,如下所示:
然后点击Finish。
在你第一次使用Maven时,因为Maven要下载大量Maven,Jetty以及Tapestry的JAR包依赖,所以要花上一定的时间。这些下载好的文件会被缓存到本地,不必被再下载一次,而你在第一次使用时必须耐心一点。
Maven这块完了以后,你就会看到一个新的目录,tutorial1,就在Eclipse的Package Explorer 视图中。
你可以做的第一件事情之一就是直接使用Maven来运行Jetty。
在Package Explorer视图中的tutorial1项目上右键选择 Run As > Maven Build... > ,输入一个Goal “jetty:run”。这样就会创建一个叫做“tutorial1”的“Run Configuration”,而我们将会在整个教程里使用它来启动应用:
附带几个选项,Tapestry运行起来会更好;点击“JRE”的Tab页,并输入如下JVM参数:
-XX:MaxPermSize=256M
-Xmx600m
-Dtapestry.execution-mode=development
(如果你使用的是 JDK1.8,那就应该吧 MaxPermSize 参数省略掉。)
看起来像下面这样:
最后,点击Run。
首次运行,会再一次下载进行许多的下载,令你有点眼花缭乱,不过在你明白过来之前,Jetty 的 servlet 容器已经启动并运行起来了。
Jetty一初始化完成(第一次过后就只要花几秒钟了),如下将会是你在控制台所看到的:
注意上图中的红色方块图标按钮。稍后你会在重启应用之前先用这个按钮停掉Jetty。
现在,你可以打开网页浏览器,导航至 http://localhost:8080/tutorial1/ 来查看运行中的应用程序。
注意:使用的Tapestry版本不同,你在屏幕上所看到的会很不一样。
页面中央所显示的日期和时间表明这是一个动态的应用程序。
这是一个完整的小型web应用。并没有多少东西,不过演示了如何创建许多页面都能共享的公共布局,还演示了一些简单的导航和链接处理。你能看到几个共享一个公共布局的不同页面。(布局Layout是一个松散的术语,意思是应用程序许多或者所有的页面彼此都有共同的视觉观感。应用程序常常会包含一个布局组件来提供这种共性。)
接下来是:探索项目结构