Seam发行版包括一个名为seam-gen的工具,该工具可以帮助您快速入门Seam。该工具会从您那里收集有关项目的信息,然后使用这些信息来创建项目结构。它还可以通过逆向工程数据库架构并生成各种形式的存根代码来生成CRUD应用程序。在本条目中,您将学习如何将生成的项目设置在Eclipse中,以便您可以利用可用的工具。

两种工具,一个目标

实际上,seam-gen有两种界面。第一个是位于Seam发行版根目录下的名为seam的命令行脚本。当我们提到seam-gen时,我们通常指的是这个脚本。在JBoss Tools(位于JBoss Developer Studio背后的开源项目)中还有一个新的项目向导,它是此脚本的补充。这两个工具在Seam发行版的seam-gen目录中共享相同的FreeMarker模板,以生成Java代码、Facelets视图和TestNG配置。除了这些通用模板之外,两个工具在设置Seam项目时相互独立工作。它们生成的项目在一种基本方式上有所不同。命令行工具生成的项目是使用Ant构建的,而JBoss Tools新项目向导创建的项目是纯使用Eclipse构建器构建的。

正如您所期望的,当您使用Eclipse插件创建项目时,您可以立即开始利用项目中的Seam工具支持。然而,就像我一样,您可能会觉得拥有一个可以在Eclipse之外使用Ant构建的项目很重要。这意味着使用seam-gen命令行脚本来创建项目。不用担心,通过在Eclipse之外创建项目,IDE就会变成一个语法检查器和Java编译器。本文的目的是演示如何通过使用seam-gen命令行脚本创建的项目来完全激活Eclipse中的Seam工具,将两者之优点兼得。此外,一旦激活了Seam工具,您就可以从Eclipse或命令行脚本来生成CRUD应用程序或存根代码。

步骤 1. 使用seam-gen(即命令行脚本)创建项目

关于如何使用seam-gen创建项目的教程很多。您可以在Seam参考指南中找到其中一个,另一个在Seam in Action的第2章中。让我们快速回顾一下这些步骤,以确保完整性。

  1. 下载并解压Seam 2.x发行版
  2. 如果使用Linux或Mac,请在发行版的根目录下运行以下命令
    chmod 755 seam
    以使seam脚本可执行
  3. 确保JAVA_HOME环境变量已定义,并且它指向一个JDK安装(>= 1.5)
  4. 在终端窗口中,将工作目录更改为Seam发行版,并在Windows上执行seam setup或在Linux或Mac上执行./seam setup(可选,您可以将Seam发行版添加到PATH中,以便像系统命令一样使用seam)
  5. 再次执行seam脚本,这次提供create-project命令

您的项目现在已创建。下一步是安装JBoss Tools插件,以便您可以将项目导入Eclipse后使用Seam工具。

步骤 2. 安装JBoss Tools插件

如果您使用JBoss Developer Studio,则可以跳过此步骤。JBoss Developer Studio包含开发Seam应用程序(及支持)所需的所有插件。这些说明解释了如何安装最新稳定版本的JBoss Tools,它应与Eclipse 3.3(欧洲)一起使用。您还可以安装开发版本,它适用于Eclipse 3.4(天马座)。

  1. 通过eclipse.org下载《Eclipse IDE for Java EE Developers》
  2. 选择菜单项帮助 > 软件更新 > 查找和安装...
  3. 选择“搜索要安装的新功能”选项
  4. 单击“新建远程站点...”按钮
  5. 在表单中输入以下值
    名称:JBoss Tools稳定更新
    URL:http://download.jboss.org/jbosstools/updates/stable
  6. 单击完成
  7. 选择“JBoss Tools稳定更新”,然后通过其余向导
  8. 在插件下载时去喝杯咖啡
  9. 下载完成后,单击“安装所有”,当安装完成时允许Eclipse重新启动

JBoss Tools现在已安装。如果您想了解安装JBoss Tools的其他方法,请参考JBoss Wiki上的这个页面

步骤 3. 将项目导入到Eclipse中

当seam-gen创建项目时,它还会生成Eclipse项目文件。因此,Eclipse将识别项目目录为有效的Eclipse项目。您只需使用Eclipse项目导入向导即可。

  1. 在Eclipse中,选择文件 > 导入项目...,然后选择“将现有项目导入工作区”选项

  2. 浏览到生成的项目位置,Eclipse应能够识别项目

  3. 单击完成

一旦Eclipse导入项目,你应该会在控制台视图中注意到Ant的输出。正如我之前提到的,使用seam-gen创建的项目使用Ant进行构建,而Eclipse驱动这些Ant任务。

注意你应该立即在项目浏览器中右键点击你的项目并选择刷新。这一步让Eclipse能够识别导入后Ant构建产生的输出文件。这样Hibernate控制台插件就能找到持久化单元配置,你可以打开一个会话工厂并开始使用它。

你的seam-gen项目现在是一个JBoss Tools Seam项目!这意味着你可以利用核心Seam工具。然而,你目前还不能使用代码生成。你需要通知JBoss Tools你的Seam运行时在哪里,以便创建新的Seam动作等。

步骤4. 将项目附加到Seam运行时

JBoss Tools需要知道Seam分布的位置,因为那里有我之前提到的共享代码生成模板。为了建立这个连接,在项目根节点上右键点击并选择属性。在出现的窗口侧边栏中选择Seam设置,以显示如图所示的Seam设置属性表单。

为了完全激活Seam支持,你需要创建一个Seam运行时。

  1. 点击“添加...”按钮以打开定义新运行时的对话框
  2. 浏览到创建项目时创建的Seam分布位置,为运行时选择一个名称,并选择版本2.0。

  3. 完成后,点击完成

你应该会看到Seam设置属性表单中的大多数表单字段现在都已激活。但是,你仍然需要建立一个(数据库)连接配置。

  1. 点击“新建...”以打开定义新连接的对话框
  2. 选择连接类型(HSQLDB或通用JDBC)
  3. 使用创建项目时使用的相同连接信息完成向导

Seam属性表单现在应该完全填充,如图所示

现在你将能够使用JBoss Tools中的所有代码生成任务,而无需回到命令行来运行seam脚本。例如,如果你选择文件 > 其他... > Seam生成实体,你可以通过逆向工程Hibernate控制台配置中定义的数据库来创建一个CRUD应用程序。(Seam工具的最新版本甚至提供了实体选择性生成)。

代码生成完成后,你可以使用“打开Seam组件”对话框通过名称打开一个Seam组件

JBoss Tools还提供EL完成,例如在Facelets视图中

你还可以使用Hibernate控制台Seam页面描述符编辑器Seam组件描述符编辑器等。实际上,对于大多数情况,你可以在JBoss Tools中像使用JBoss Tools中的Seam Web Project向导创建的项目一样工作你的seam-gen项目。但是,从Seam 2.1开始,当你从命令行版本的seam-gen开始时,你会失去增量部署应用程序通过Eclipse工具的能力。

步骤5. 将应用程序部署到JBoss AS

为了将seam-gen应用程序部署到JBoss AS,你必须使用项目构建文件中的Ant目标,即使在Eclipse中开发也是如此。但是你可以从Eclipse驱动这些Ant任务。

  1. 选择窗口 > 显示视图 > Ant以打开Ant视图
  2. 在Ant视图中右键点击并选择添加构建文件...
  3. 选择项目根目录下的build.xml
  4. 当Ant树出现时,展开它并滚动到explode目标。

  5. 双击爆炸目标,将应用程序部署到JBoss AS作为解包归档

您可以从命令行启动JBoss AS,或在Eclipse中设置JBoss AS运行时。然而,正如我在上一节提到的,目前JBoss Tools无法原生地将seam-gen创建的项目部署到JBoss AS运行时。我们正在努力改进seam-gen,以便设置Eclipse项目,使得原生增量部署能够直接使用。在此之前,您仍然可以利用增量热部署,因为explode Ant任务与Eclipse中的自动构建机制相关联。

步骤6. 调试应用程序

如果您以调试模式启动JBoss AS,可以通过点击主工具栏上调试图标旁边的箭头,然后选择debug-jboss-将其连接到Eclipse调试器,其中是您分配给项目的名称。(如果您看不到此选项,请重新打开和关闭项目)。

调试器作为远程Java应用程序连接到JBoss AS。

IntelliJ IDEA 预览

如果您从SVN检出Seam并使用seam脚本创建新项目,您可以将该项目导入IntelliJ IDEA,并利用IntelliJ IDEA 8中提供的Seam工具支持。IntelliJ IDEA 8提供广泛的Seam工具支持,包括EL自动完成、验证和重构。您可以在此查看新功能的演示。

总结

本教程演示了您可以使用JBoss Tools提供的Seam工具对使用seam-gen创建的项目进行操作。您学习了如何将项目导入Eclipse,设置Seam运行时,配置连接配置文件,以及在JBoss AS上部署和调试应用程序。您还对IntelliJ IDEA 8中Seam并行工具支持进行了简要了解。


返回顶部