在 IBM Rational Application Developer 中为 portlet 项目实现 Maven 集成

可以帮助构建过程自动化的 Apache Maven 框架已经逐渐流行,它可以帮助开发人员将关注点放到可复制和可重用的命令上。IBM® Rational® Application Developer for WebSphere Software v9.0 版本为基于 Maven 的开发引入了工具支持。这篇文章解释了 Maven 工具如何与 IBM® Rational® Application Developer 的 portlet 工具特性进行集成,来同时增强开发和构建的体验。

Manish Aneja, 项目负责人, IBM

作者照片Manish Aneja 是 IBM Collaboration Solutions (ICS) 集团 IBM Rational Application Developer – Portal Tools 项目负责人。此外,他在敏捷开发实践和可靠性及功能测试自动化方面具有丰富的经验。他曾在 developerWorks Rational Application Developer wiki 上 发表过多篇文章。



Awanish Kumar Singh, 软件工程师, IBM

作者照片Awanish Kumar Singh 是印度古尔冈 IBM 印度软件实验室 IBM Rational Application Developer – Portal Tools 项目的一名软件工程师。他在插件开发、测试自动化和自动化框架方面很有经验。他曾在 developerWorks 上发表过多篇文章。



2014 年 3 月 06 日

Apache Maven 通过提供为项目构建基础设施提供一致性来提升质量和开发效率,以及通过使用和应用构建最佳实践来提升清晰性。Maven 框架首先可以通过将多重构建需求和标准简化成通用及灵活的系统,来辅助构建自动化,并帮助实现学习一次即可跨多重项目进行部署。

Maven 已经变得流行,越来越多的开发人员从编写定制化 Apache Ant 脚本转移到构建可复制及可重用的 Maven 命令上来。使用一个组织已建立的标准来实现一个新的构建过程通常都非常麻烦,而且定制化构建脚本通常不允许跨项目资源共享。Maven 通过使用标准化依赖关系管理、工件存储库,连接外部源代码管理的适配器、测试系统、构建技术,以及项目模式及架构类型构造(archetype)——通常是包括静态工件被用作原始模式或模型的模板——解决了许多类似这样的问题。

IBM® Rational® Application Developer for WebSphere Software 这一集成开发环境为面向基于 Maven 的开发引入了工具支持。Rational Application Developer 提供了丰富的工具特性,例如项目创建向导、编辑器(Page Designer,Rich Page Editor)、运行时测试环境,以及发布支持。Maven 开发人员可以使用这些特性来增强他们的开发体验和生产力,同时 Rational Application Developer 开发人员还可以使用 Maven 的特性和实践来流水线化开发和构建生命周期管理。

这篇文章为您展示:

  • 为本地 Maven 存储库填充运行时库
  • 使用 IBM archetype 创建 portlet 项目
  • 使用 Maven 插件将项目发布到 IBM® WebSphere® Portal Server
  • 将一个已有的 portlet 项目转换为一个 Maven 配置

创建一个基于 Maven 的 portlet 项目

您可以在 Rational Application Developer 中通过两种方式创建一个基于 Maven 的 portlet 项目:使用 IBM archetype 来进行 portlet 项目创建,这一工具可以在 IBM public repository for Maven 上找到(参见参考资料);或者在 Rational Application Developer 中使用 portlet 创建向导来创建 portlet 项目,并随后将此 Rational Application Developer portlet 项目转换为一个基于 Maven 的配置。为了在 WebSphere Portal Server 上部署一个 portlet 项目,您可以使用 IBM deployment plugin,这一工具同样可以在 IBM public repository 里找到。图 1 演示了 Rational Application Developer 中一个使用了 Maven 工具的 portlet 项目:

图 1. Rational Application Developer 中面向 portlet 开发的 Maven 工具
使用 Maven 工具创建一个 portlet 项目

安装和选定项目对象模型(POM)

一个应用程序的依赖关系通常唯一地在其 pom.xml 配置文件中使用 groupIdartifactId,以及 version 参数进行指定。为了确保一个基于 Maven 的 portlet 项目可以编译,项目中引用的程序库应当在 Maven 存储库中是可用的。

pom.xml 文件,即 WebSphere Portal Server 和 IBM® WebSphere® Application Server 运行时的 install POM,可以从 IBM public repository 获得。Install POM 从服务器安装文件中复制公共程序库到本地 Maven 存储库中。此外,为了编译,target POM 还将这些运行时公共程序库添加到 portlet 项目的 classpath 中。Target POM 可以在 Maven 项目中被用作为一个依赖关系。图 2 演示了 Maven 项目中 install POM 与 target POM:

图 2. 使用 Install POM 和 Target POM
Maven 项目中 install POM 与 target POM

这些就是 install POM 和 target POM 中所必须的 JAR 文件或程序库的一对一映射。对于一个使用 IBM archetype 的 portlet 项目来说,target POM 默认是作为一个依赖关系添加到项目的 pom.xml 中。对于被转换为 Maven 配置的 portlet 项目来说,您必须手动添加 WebSphere Portal Server 及 WebSphere Application Server 的 target POM 来作为依赖关系。对于一个本地 Maven 存储库来说,使用 install POM 是一个一次性的活动。

为本地 Maven 存储库填充服务器程序库

为了给一个使用 install POM 的本地 Maven 存储库安装服务器所提供的公共程序库,请执行以下步骤:

  1. 在一个新的工作空间中打开 Rational Application Developer,或使用一个已有的工作空间。
  2. 创建一个新的 Maven 构建运行配置,打开 Run > Run Configurations...
  3. 在 Run Configurations 对话框中,选择 Maven Build 选项。
  4. 在右键菜单中单击 New。一个New Run Configuration 区段将会展开,如图 3 所示:
图 3. 安装公共程序库
运行配置对话框来使用安装 POM

为本地 Maven 存储库填充 WebSphere Portal Server 运行时程序库

为了给本地 Maven 存储库安装来自 WebSphere Portal Server 的公共程序库:

  1. Name 域中输入名字。
  2. 设置 Base directoryRAD install directory/plugins/com.ibm.etools.portal.server.tools.common.core/resources/scripts/Portal 8 plugins
  3. Goals 域中键入 install
  4. 在 Parameters 区段,单击 Add 来设置参数名 serverInstallationFolder。为了设置参数值,使用安装文件夹的路径(例如,C:/IBM/WebSphere/WP80x/PortalServer)。
  5. 点击 Apply 应用变更,并点击 Run 运行配置。

为本地 Maven 存储库填充 WebSphere Application Server 运行时程序库

WebSphere Portal Server 安装在 WebSphere Application Server 之上,所以 portlet 项目也同样引用 WebSphere Application Server 的公开 API。为了能成功编译 portlet 项目,您也同样需要在本地 Maven 存储库中包含这些程序库。

使用图 3 中所示的 Run Configuration 来安装来自 WebSphere Application Server 的公用程序库到本地 Maven 存储库,按照以下步骤:

  1. 输入配置的名字 Name
  2. 设置 Base 目录为 RAD 安装目录/plugins/com.ibm.etools.maven.javaee.core/resources/scripts/WAS 8 plugins
  3. Goals 域中输入 install
  4. 在参数 Parameters 区段,单击 Add 来设置参数名 serverInstallationFolder。使用 WebSphere Application Server 安装目录(C:/IBM/WebSphere/AppServer)的路径来设置参数值。
  5. 点击 Apply 应用变更,并点击 Run 来运行配置。

使用 IBM archetype 来创建 portlet 项目

现在您已经完全设置好使用 IBM archetype 来创建一个 portlet 项目。Archetype 可以帮助您更加有效地工作,因为它们使得复制最佳实践或组织级别模板更加容易。面向 portlet 项目的 IBM archetype(portletapp-portlet20)现在可以从 IBM public repository for Maven 上获得。您可以使用这一 IBM archetype 来生成一个以 WebSphere Portal Server v8.0 为目标的 JSR 286 portlet 项目。使用以下步骤来使用 IBM archetype 来创建一个 portlet 项目:

  1. 打开 File > New > Project...
  2. 选择 Maven > Maven Project
  3. 在 New Project 对话框中单击 Next。New Maven Project Wizard 将启动。
  4. 接受向导第一页上的默认值,并点击 Next
  5. 在 Select an Archetype 页,在 Catalog 下拉菜单中选择 All Catalogs
  6. Filter 文本域中输入 portlet20。在 archetype 表中将会列出设置 Group Idcom.ibm.tools.archetypeArtifact Id 设置为所过滤的 portletapp-portlet20,以及 Version 设置为 1.0 的多个 archetype。
  7. 选择 IBM archetype portletapp-portlet20 并单击 Next。这一结果如以下图 4 所示。
图 4. 使用 IBM archetype 创建 portlet 项目
使用 IBM archetype 的 portlet 项目创建过程

接下来您要做的是输入样本值。对于 Group Id,输入 com.test.demo。对于 Artifact Idportlettitleportletclass,输入 MyLatestPortlet。点击 Finish 以结束。

一个 portlet 已经在工作空间创建好了。图 5 展示了项目的树形结构。

图 5. portlet 项目的树形结构
新项目的示例树形结构

访问 Maven 依赖关系树的节点并展开它。注意,如图 6 所示,来自 WebSphere Portal Server 及 WebSphere Application Server 的 JAR 文件已经被添加到 portlet项目的 classpath 中,您会用到它来编译 portlet 项目。

图 6. 公共 JAR 文件已经加入到 portlet 项目的 classpath 中
添加到项目 classpath 的 JAR 文件清单

现在打开 portlet 项目的 pom.xml 文件并跳到 Dependencies 选项卡。在 Dependencies 区段您会看到 WebSphere Portal Server 和 WebSphere Application Server 的 target POM 条目。pom.xml 的源代码视图如清单 1 所示。

清单 1. pom.xml 中作为依赖关系的 Target POM
<dependencies>
    <dependency>
        <groupId>com.ibm.tools.trget</groupId>
        <rtifctId>ws</rtifctId>
        <version>8.0.0</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.ibm.tools.trget</groupId>
        <rtifctId>portl</rtifctId>
        <version>8.0.0</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>
<dependencies>

使用 Maven 插件发布 portlet 项目到 WebSphere Portal server

在一个集成或发布环境中部署,将会复制最终的包到远程存储库来共享给其他开发人员或者项目组。Rational Application Developer 为 WebSphere Portal 提供的工具有一个部署插件(deployment plugin)可以用于发布您的 portlet 项目到服务器上。这个 IBM deployment plugin 可以从 IBM public repository 获得。

要发布一个 portlet 到 WebSphere Portal Server,首先要打开所创建的 portlet 的 pom.xml。然后在 <build><plugins></plugins></build> 标签中复制清单 2 中所列出的代码。

清单 2. 用于添加到部署插件的代码
<plugin>
    <groupId>com.ibm.tools.plugin</groupId>
    <rtifctId>portl-deployment-mven-plugin</rtifctId>
    <version>1.0</version>
    <executions>
        <execution>
            <phse>integrtion-test</phse>
            <gols>
                <gol>deploy-portlet</gol>
            </gols>
        </execution>
    </executions>
</plugin>

如果您想要确定一个远程 portal server 或定制化特定的设置,您可以在 <configuration> 标签中通过提供如清单 3 所示的期望的 IBM portal deployment plugin 配置参数来这么做。

清单 3. 部署插件的配置参数
file  <file></file>
/**
 * The module file which will be deployed.
 * @prmeter expression="${deploy-portlet.file}" defult-vlue=
 * "${project.build.directory}/${project.build.finlNme}.$
 * {project.pckging}"
 * @required
 */

usernme  <usernme></usernme>
/**
 * The usernme of the portl
 * @prmeter expression="${deploy-portlet.usernme}"
 * defult-vlue="wpsdmin"
 * @required
 */

pssword  <pssword></pssword>
/**
 * The pssword of the portl
 * @prmeter expression="${deploy-portlet.pssword}"
 * defult-vlue="wpsdmin"
 * @required
 */

hostnme  <hostnme></hostnme>
/**
 * The hostnme of mchine on which portl instlled
 * @prmeter expression="${deploy-portlet.hostnme}"
 * defult-vlue="loclhost"
 * @required
 */

port<port></port>
/**
 * The port which will be used for the deployment
 * @prmeter expression="${deploy-portlet.port}" defult-vlue="10039"
 * @required
 */


contextroot  <contextroot></contextroot>
/**
 * The context root of the portl
 * @prmeter expression="${deploy-portlet.contextroot}" defult-vlue="wps"
 * @required
 */

scheme  <scheme></scheme>
/**
 * The scheme which will be used for the deployment
 * @prmeter expression="${deploy-portlet.scheme}" defult-vlue="http"
 * For now only http scheme is supported in this plugin
 * @required
 */

profilepth  <profilepth></profilepth>
/**
 * The pth of the WebSphere Portl profile, required in cse of ER
 * deployment
 * @prmeter expression="${deploy-portlet.profilepth}"
 */

cell  <cell></cell>
/**
 * The cell which will be used for the deployment, required in cse of ER
 * deployment
 * @prmeter expression="${deploy-portlet.cell}"
 */

您可以使用 content assist 检查配置参数的默认值。清单 4 显示了 pom.xml 中的 snippet 是如何出现的,如果您使用这些配置参数的话。

清单 4. 使用配置参数的部署插件
<plugin>
      <groupId>com.ibm.tools.plugin</groupId>
      <rtifctId>portl-deployment-mven-plugin</rtifctId>
      <version>1.0</version>
      <executions>
	  <execution>
	    <phse>integrtion-test</phse>
          <configurtion>
	   <usernme>wpsdmin</usernme>
	   <pssword>wpsdmin</pssword>
	   <hostnme>loclhost</hostnme>
	   <port>10039</port>
	   <profilepth>C:\IBM\WP80\wp_profile</profilepth>
	   <cell>wn</cell>
          </configurtion>
	    <gols>
	   <gol>deploy-portlet</gol>
	    </gols>
	  </execution>
      </executions>
 </plugin>

现在您已经在您的 pom.xml 中添加了 Maven 部署插件的引用。找到 Maven > Update project...。在项目的上下文菜单里,为 pom.xml 中需要更新的值更新项目配置。

要发布项目到服务器,选择项目,并从其上下文菜单中选择 Run As > Maven Build...。在 Goal 域,输入 integration-test。单击 Run

Maven 执行操作会启动,然后您可以在终端里看到执行日志。当执行完毕后,在终端的日志最末段查看 BUILD SUCCESS 消息。您同时也会看到以下消息:

[main] INFO com.ibm.portal.mvn.plugin.DeployPortletPlugin -
Portlets are successfully deployed on portal server

通过在 portal administrator console 中查找验证该 portlet,可以确认其已经部署到 WebSphere Portal Server。您可以还可以将这一 portlet 放置在一个 portal 页面上来查看其展现情况。

将一个 Rational Application Developer portlet 项目转换成一个 Maven 项目

到目前为止,您已经学到了如何使用 Rational Application Developer 中为 portlet 项目场景所提供的 Maven 工具选项。您也可以将一个 Rational Application Developer portlet 项目转换为一个 Maven 项目。这一方法利用了先进的工具特性,例如与目标 portal 运行时的紧密集成、所见即所得(WYSIWYG)编辑器,以及针对 Dojo 和 jQuery 小部件(widget)和事件(event)的拖拽功能。

设置工作空间(workspace)

您还需要设定您的工作空间级别选项,使普通 Java EE 项目引用与 Maven 设置相互映射。这样设置:

  1. 找到 Window > Preferences
  2. 选择 Java EE > Maven > Maven Project Settings
  3. 在 Maven Project Settings 页单击 Set all Maven values
  4. 单击 Apply
  5. 选择 Java EE > Project
  6. 在 Project 页面上取消选中 Add Project to the EAR file 单选框。
  7. 单击 OK。

图 7 展示了如何建立您的 Maven 设置。

图 7. 应用 Maven 项目设定
映射 Java EE 选项到 Maven 设置

在 Rational Application Developer 中创建 portlet 项目:

  1. 找到 File > New... > Project...
  2. 在 New Project wizard 中,选择 Portlet project
  3. 单击 Next
  4. 输入一个 portlet 项目的名称,并选择 WebSphere portal v8.0作为目标运行时。
  5. 在配置区段单击 Modify。
  6. 选择 JSR286 作为 portlet API 以及 Basic portlet 作为 portlet 类型。
  7. 结束向导。

一个新的 portlet 项目已经创建,并显示在 Enterprise Explorer 视图中。

注意:当您完成向导时,您或许会看到一个关于试图已经发生变更的对话框通知。如果有,选择 No,因为您准备使用 Maven 的配置。

转换为 Maven 配置

现在您已经准备好转换到 Maven 配置。这样操作:

  1. 右键单击您刚刚创建的 portlet 项目,以触发其上下文菜单。
  2. 选择 Configure > Convert to Maven Project。一个 Create new POM 向导对话框将会出现。
  3. Packaging 中选择 war
  4. 完成向导。

在完成转换之后您或许会收到一些编译错误警告,因为运行时 classpath 已变空。那是因为项目编译所需的 JAR 文件在当前 portlet 项目的 classpath 中缺失。为了解决这一问题,您需要添加 target POM 来作为依赖关系到 portlet 项目的 pom.xml 中。这些 target POM 可以在 IBM public repository 获得。

将 target POM 添加为依赖关系(Dependencies):

  1. 打开 portlet 项目的 pom.xml。
  2. 单击 Dependencies 选项卡。
  3. 在 Dependencies 区段单击 Add
  4. Filter 域输入 com.ibm.tools.targetSelect Dependency 对话框将会打开。
  5. 添加 com.ibm.tools.target portal 8.0.0 POMcom.ibm.tools.target was 8.0.0 POM 作为依赖关系。
  6. 保存 pom.xml。

图 8 显示了 Select Dependency 对话框。

图 8. 添加 POM 作为依赖关系
Select Dependency 对话框

确保依赖关系的范围也提供了。清单 5 显示了 POM 中的依赖关系是怎样的:

清单 5. 作为依赖关系的 Target POM
<dependencies>
    <dependency>
        <groupId>com.ibm.tools.trget</groupId>
        <rtifctId>ws</rtifctId>
        <version>8.0.0</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.ibm.tools.trget</groupId>
        <rtifctId>portl</rtifctId>
        <version>8.0.0</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>
</dependencies>

在 Enterprise Explorer 视图中打开 portlet 项目的上下文菜单,选择 Maven > Update Project。在更新结束后,在 Problems 视图或 Marker 视图中应该不再有错误,而且 WebSphere Portal Server 的公共程序库也应已经添加到 portlet 项目的 Maven classpath。


总结

Maven 集成帮助开发人员可以采用构建和开发的最佳实践,而这篇文章提供了一个关于如何启用 Maven 的 portlet 项目支持的概览。它展示了本地 Maven 存储库如何可以填充运行时库;同时还展示了如何使用 IBM Maven portlet archetype 创建一个 portlet 项目,并使用基于 Maven 的部署插件发布到 WebSphere Portal Server 上。最后您还了解到如何转换一个 Rational Application Developer portlet 项目为一个 Maven 配置。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=965004
ArticleTitle=在 IBM Rational Application Developer 中为 portlet 项目实现 Maven 集成
publish-date=03062014