WEB开发网
开发学院软件开发Java 开放源码 CMS 入门,第 2 部分: 通过 Eclipse 构建... 阅读

开放源码 CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本

 2010-04-16 00:00:00 来源:WEB开发网   
核心提示:开始之前在这一节中,您准备从源文件构建 Jakarta Slide 内容管理系统(CMS),开放源码 CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本,在本系列的 第 1 部分,您设置并运行了与 Apache Tomcat 捆绑的一种版本的 Slide,到那时,您就可以骄傲地享用

开始之前

在这一节中,您准备从源文件构建 Jakarta Slide 内容管理系统(CMS)。在本系列的 第 1 部分,您设置并运行了与 Apache Tomcat 捆绑的一种版本的 Slide。在这里,我们将为您设置开发环境,以便构建和定制 Slide。您应该保留在第一个教程中设置的 Slide CMS,以便作为参考。当您完成这个教程的时候,将您在这个版本中作出的更改与初始的 Slide CMS 版本作比较。

关于本教程

本教程适合任何想要构建和定制内容管理系统(CMS)的人。它展示了如何下载 Jakarta Slide 开放源码 CMS 的源代码、设置 Eclipse 以及构建 CMS。本教程是一个系列中的第 2 部分,在这个系列中,您将使用 Eclipse、Java™ 技术以及其他开放源码工具创建一个定制的开放源码 CMS

结合 Eclipse,您还将为 Web Distributed Authoring and Versioning (WebDAV) 以及其他插件准备开发环境。结合 Java 技术,您将使用 Jakarta Slide、Exadel Studio Pro 和 Apache Tomcat(为以后使用 Apache Struts 作准备)。

本教程采用的方法不同于 Slide HOWTO 上的 Jakarta Slide Eclipse 说明给出的方法,在那里的方法是用一个 CVS 储存库进行连接的。本教程解决了与下载 Slide 源文件以及将它们导入到一个 Eclipse 项目中相关的问题。这个系列中以后的教程将添加 Struts 应用程序组件,这些组件不是 Slide CVS store 的一部分,或者不与 Slide CVS 存储协作。

本教程的目标是填补从 CVS 构建 Slide 安装与从导入的源文件构建 Slide 之间的鸿沟。对于缓慢的 Internet 连接,或者其他使您决定不使用 Jakarta Slide 站点上的 CVS 方案的因素,下载 zip 源文件并将源文件导入到 Eclipse 中是一种替代方案。

关于如何使用 Eclipse 和 Apache Ant 构建 Java 项目的基本知识会比较有用,但不是必需的。在理解本教程之前,我建议完整阅读本系列的 第 1 部分,不过也不一定要这么做。

先决条件

为了运行本教程中的代码,您需要:

Java 2 Software Developer's Kit (SDK) V1.4.2 或更高版本

Eclipse SDK V3.1 或更高版本

在 第 1 部分 中安装的 Slide/Tomcat bundle

Slide 源文件

JDOM

Java Transaction API (JTA)

Apache Tomcat V4.1(如果您不使用 Slide/Tomcat bundle 的话)

Jakarta Commons HTTP Client

Java Management Extensions (JMX)

Log4j

Exadel Studio V2.5

创建一个 Eclipse 项目

在这一节中,您将准备 Eclipse,以便导入源文件和构建 Slide CMS

安装 Eclipse

注意: 如果您已经在运行 Eclipse V3.0.1 或更高版本,则可以略过这一步。

下载、安装和运行 Eclipse 很容易。只需遵循以下步骤:

从 Eclipse 下载您想要的版本的 Eclipse。(本教程是基于 Eclipse V3.0.1 for Microsoft® Windows® 的,但应该也适用于 V3.1。)

将 zip 或 tar 文件解压到您所选择的目录。

运行 Eclipse.exe(或者 UNIX® 中类似的文件)。

安装 Exadel Studio

如果您已经有了 Exadel Studio,那么可以略过这一步。我在这里包含了这一步,这不是因为 Exadel Studio 支持 JavaServer Faces (JSF) 或 Struts,而是因为它与 Apache Tomcat 的集成以及它调试代码的能力。不用 Exadel Studio 也可以构建 Slide,但本系列中将来的教程会结合使用 Struts 和 Slide。由于这也是设置开发环境的一个环节,因此在这里我包含了这一步。

要下载和安装 Exadel Studio,执行以下步骤:

下载 Exadel Studio。(我推荐免费的版本。专业版虽然提供了更多的功能,但在本教程中不需要。)

执行安装程序,并根据指示安装 Eclipse 中的插件。

打开 Eclipse,通过选择 Window > Open Perspective > Other > Exadel Studio 验证是否可以访问 Exadel Studio 透视图。

下载 Slide 源文件

您可以使用 Eclipse CVS 储存库浏览器找到 Apache CVS 储存库中最新版本的 Jakarta Slide,但是最新的版本可能不稳定。我建议您在成功地通过一个发行版或发行版候选源文件构建了 Slide 之后才使用这种方法,以免遇到未见过的 bug。

对于本教程,您需要下载 2.1 版,并通过这个版本构建 Slide。这种方法只比通过 CVS 查看版本更有效一点点,但是,按照这种方法,即使通过很慢的 Internet 连接也能下载 zip 文件。通过拨号连接进行大型下载时,CVS 连接可能超时。

要下载 Slide 源文件,执行以下步骤:

从 Slide 下载 zip 源文件。

将文件解压到一个新的目录中 —— 不要放入 Eclipse 工作区中。

由于以后要将内容导入到 slide-2.1 项目中,所以应该保留下载的源文件,以便将来使用。

注意解压源文件所用的目录的位置。这个文件夹将成为一个引用位置,您将从这里把源文件导入到一个 Eclipse 项目工作区。

下载 Slide 库

如果还没有下载,那么下载所有必需的库,并将它们存储在可以找到的地方,以便将它们导入您创建的 Slide 项目中。大多数必需的库都位于 Slide 发行版目录下的 lib 文件夹中。其他两个必需的库是 catalina.jar 和 jmx.jar,这两个库通常在 Tomcat 安装目录中。如果您完成了第一个教程,那么可以在用 bundle 安装的 Tomcat 服务器中找到这两个库。

创建 Slide 项目

打开 Eclipse,然后选择 File > New > Project > Java Project (见图 1)。这样将在默认工作区中创建一个新的 Java 项目,您可以将源文件和库导入其中,并保留下载的、未解压的文件,供以后引用。

图 1. 在 Eclipse 中新建 Java 项目
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

在 Create a Java project 窗口中,将项目命名为 slide-2.1,然后选择 Create separate source and output folders 选项(见图 2)。

图 2. 设置项目名称和布局
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

导入 Slide 源文件并设置源文件路径属性

在 Navigator 视图中,右键单击 slide-2.1,然后选择 Import。在 Select 窗口中,选择 File system,然后单击 Next(见图 3)。

图 3. 从文件系统导入 Slide 源文件
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

在 File system 窗口中,单击 From directory 下拉列表旁的 Browse。浏览至包含您所解压的 Slide 源文件的目录,然后单击 OK(见图 4)。

图 4. 浏览至包含源文件的目录
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

在 File system 窗口中,选择将文件导入 slide-2.1 文件夹。选择 Create selected folders only 选项 (见图 5)。

图 5. 将文件导入 slide-2.1 项目
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

成功地导入了所有文件之后,项目看上去应该如图 6 所示。

图 6. 在 Eclipse 中导入的项目
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

准备构建源文件

现在需要的东西都已就绪。在这一节中,您将准备让 Ant 构建源文件。

设置构建路径

在 Navigator 视图中,右键单击 slide-2.1,然后选择 Properties。 在 Properties 窗口中,选择 Java Build Path。这是默认的源文件夹。您将删除 src 文件夹,然后在这里和其他位置添加源文件文件夹。清除 Allow output folders for source folders 复选框:您希望所有构建输出进入 slide-2.1/bin。

在 Source 选项卡上,单击 Add Folder 将以下各个子文件夹添加到 slide-2.1:

jaas

jdk14

roles

share

stores

util

webdav/server

wrappers

在 slide-2.1/projector 下,单击 Add Folder 添加 src/java 子文件夹。

您的 Properties 窗口现在看上去应该如图 7 所示。如果您习惯 Eclipse 默认的组织,那么这种设置看上去会比较陌生,各个独立的源文件根文件夹大致相当于包。但是要避免将附近的东西移入到一棵源树中:这样做的工作量很大,而且不值得。按照这些说明去做,Eclipse 就可以很好地处理新的组织。

图 7. slide-2.1 项目的默认源文件夹
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

准备好库

注意在 Navigator 视图中,各个源文件夹现在显示了一个小小的红 x 图标。这个图标表明,Eclipse 编辑时编译器遇到一个错误,原因是各个库和 Java Archive (JAR) 文件目前还不在构建路径中。

添加 .jar 文件到构建路径中,方法与在 Properties 窗口中添加源文件夹很相似。在 Navigator 视图中,右键单击 slide-2.1,然后选择 Properties。单击 Libraries 选项卡,然后单击 Add JARs。 在 JAR Selection 窗口中,展开 slide-2.1 文件夹,展开 lib 文件夹,然后选择所有文件(见图 8)。单击 OK。

图 8. 添加 .jar 文件到 slide-2.1 项目中
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

两个 .jar 文件仍然需要添加。在 Libraries 选项卡上单击 Add External JARs。在系统上找到以下 .jar 文件,并将它们添加到库构建路径中:

catalina.jar(通常在 Tomcat 安装目录中的 server/lib 里面)

jmx.jar(通常在 Tomcat bin 目录中)

Properties 窗口的 Libraries 选项卡现在看上去应该如图 9 所示。

图 9. 添加 JAR 之后的 Libraries 选项卡
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

当 Navigator 视图中所有红色 x 图标都已消失的时候,就可以确信已经满足了所有构建需求,至少满足了 Eclipse 编辑时编译器的需求。

准备 build.xml 文件

现在必须准备好 Ant。首先,将 build.properties.sample 复制和粘贴到 build.properties(或直接重命名)。这个文件为 Ant 提供本地的值,这样就不必随着环境的变动而修改 build.xml 文件。

清单 1 展示了 build.properties.sample 文件。

清单 1. build.properties.sample

# 
------------------------------------------------------------------- 
# build.properties.sample # # This is an example 
"build.properties" file, used to customize # 
building Jakarta Slide for your local 
environment. # Make any changes you need, and 
rename this file to # "build.properties" # # 
$Id: build.properties.sample,v 1.21.2.4 
2004/10/19 05:39:22 ozeigermann Exp $ # 
------------------------------------------------------------------- 
 
 
# 
------------------------------------------------------------------- 
# CONFIGURATION OPTIONS # 
------------------------------------------------------------------- 
 
# ----- Compile Control Flags ----- 
compile.debug=on compile.deprecation=off 
compile.optimize=on compile.target=1.3 
build.compiler=modern 
 
 
# ----- Build Control Flags 
#build.sysclasspath=ignore # Uncomment the 
following line to set user authentication on by 
default #authenticate # Uncomment to avoid 
generating JavaDocs (faster builds) skip.javadoc 
 
 
# 
------------------------------------------------------------------- 
# EXTERNAL DEPENDENCIES # 
------------------------------------------------------------------- 
 
# ----- JAXP 1.2 compliant XML Parser ----- 
#jaxp.home= #jaxp.lib=${jaxp.home}/lib 
#xmlapi.jar=${jaxp.lib}/crimson.jar 
#xmlparser.jar=${jaxp.lib}/crimson.jar 
#jaxp.jar=${jaxp.lib}/jaxp.jar 
 
# ----- Catalina distribution directory ----- 
#catalina.dist= 
catalina.server.lib=${catalina.dist}/server/lib 
catalina.common.lib=${catalina.dist}/common/lib 
catalina.jar=${catalina.server.lib}/catalina.jar 
# for 5.0.28 
jmx.jar=${catalina.dist}/bin/jmx.jar # for 
earlier versions 
#jmx.jar=${catalina.common.lib}/jmx.jar 

保留 #jaxp 行上的注释。去掉 #catalina.dist= 行上的注释,并在这一行后面加上 Tomcat 安装目录的路径,也就是您从中找到 catalina.jar 和 jmx.jar 文件的那个目录。注意,对于不同版本的 Tomcat,jmx.jar 文件的位置有所变化。

注意: ${catalina.dist} 位于大多数 Windows 安装的 C:\Program Files\Apache Software Foundation\Tomcat 5.0 中。

Ant 构建目标

build.xml 文件 —— 也就是为 Ant 启动构建过程的文件 —— 包含一些目标,这些目标可以通过在 Navigator 视图中右键单击 build.xml 并选择 Run 来访问。在显示的 Modify attributes and launch 窗口中的 Targets 选项卡上,可以选择任何目标,甚至重新排列那些目标的运行顺序,虽然这些目标之间存在依赖关系。

表 1 展示了一些目标以及它们的用途。

表 1. Ant 构建目标

Ant 目标描述
webapp-jaas-dist创建一个 slide.war 文件,该文件包括 Java Authentication and Authorization Service (JAAS)
prepare-dist创建发行版目录
testsuite-dist-prepare准备 testsuite 目录
package-testsuite-zip创建 testsuite .zip 文件
package-testsuite-tgz创建 testsuite .tar 文件
full-dist依靠 dist、webapp-dist、catalina-wrapper 和 testsuite-dist 目录
package-zip创建 full slide.zip 文件
package-tgz创建 full slide.tar 文件
release用 .zip 和 .tar-gzip 打包发行版
package-src-prepare为打包准备源文件发行版
tomcat-install 
tomcat-5-install通过 Tomcat 认证用 Tomcat V5.x 安装 Slide(这个目标要求 Tomcat V5.x)
tomcat-4-install通过 Tomcat 认证用 Tomcat V4.x 安装 Slide(这个目标要求 Tomcat V4.x)
catalina-wrapper构建与 Catalina 相关的组件(这个目标要求 Tomcat V4 或 V5)
jaas-deploy-tomcat-5用 JAAS 认证将 Slide 作为一个 Web 应用程序部署到 V5.0.28 或更高版本(这个目标要求 Tomcat V5.0.28)
webapp-jaas-dist建立以 JAAS Web 应用程序形式打包的 Slide 发行版
webapp-dist建立以 Web 应用程序形式打包的 Slide 发行版
dist-xml建立与 XML 相关的库的 Slide 发行版
dist建立一个 Slide 发行版
prepare-dist准备发行版目录
javadoc建立 Slide Javadoc 文档
clean删除之前的构建
webdav-server-javadocWebDAV server 类的 Javadoc。
doc构建包括 Javadoc 信息的文档
jdk14-logging构建与日志记录相关的 Java SDK V1.4 组件(这个目标要求 SDK V1.4)
log4j-logger构建与 Log4j 相关的组件(这个目标要求 Log4j)
main构建 Slide 的核心
all默认地构建 Slide 的主目标和 dist 目标。
prepare创建构建目录结构。
detect.fail检查依赖关系。

现在让我们深入研究 Ant 构建过程。

运行 Ant

完成前面所有步骤之后,便可以运行 Ant 构建过程了。如果您适当地设置了源文件和库的构建目录,Eclipse 编译器就已经构建好项目,这可以作为判断是否准备就绪的一个指示器。如果在源文件夹上没有出现红色 x 图标,那么 Eclipse 就可以编译所有的源文件了。

在 Navigator 视图中,右键单击 slide-2.1/build.xml,然后选择 Run > Ant。您应该可以看到如图 10 所示的窗口,其中 all (default target) 复选框被选中。

图 10. 为 Ant 构建选择所有目标
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

单击 Run 可以从控制台看到清单 2 中所示的成功的构建输出。如果没有看到这样的输出,那么可能是 Ant 找不到某样东西。但是编译应该没有问题,因为 Jakarta 站点上的 zip 文件都是用相同的 build.xml 文件生成的,如果编译目标失败的话,它们也会失败。

清单 2. Ant 构建的输出

Buildfile: 
C:\Java\eclipse\workspace\slide-2.1\build.xml 
clean: clean: main: [copy] Copying 2 files to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[echo] Building Slide Core API [javac] Compiling 
287 source files to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[javac] Note: Some input files use or override a 
deprecated API. [javac] Note: Recompile with 
-deprecation for details. [copy] Copying 1 file 
to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[copy] Copying 25 files to 
C:\Java\eclipse\workspace\slide-2.1\build\lib 
[echo] Building Slide WebDAV Servlet [javac] 
Compiling 137 source files to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[javac] Note: Some input files use or override a 
deprecated API. [javac] Note: Recompile with 
-deprecation for details. [echo] Building 
Standard Stores [javac] Compiling 61 source 
files to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[echo] Building Default Roles [javac] Compiling 
6 source files to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[echo] Building JAAS LoginModule [javac] 
Compiling 4 source files to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
prepare-dist: [echo] Creating distribution 
directories [mkdir] Created dir: 
C:\Java\eclipse\workspace\slide-2.1\dist [mkdir] 
Created dir: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\webapp 
[mkdir] Created dir: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\lib 
[mkdir] Created dir: 
C:\Java\eclipse\workspace\slide-2.1\dist\doc 
[mkdir] Created dir: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\wrappers 
detect.display: [echo] 
+------------------------------------------------------- 
[echo] | Build environment for Jakarta-Slide 2.1 
[echo] | [echo] | Note: [echo] | If 
${property.name} is displayed for a library 
[echo] | instead of 'true', that library is not 
present. [echo] 
+------------------------------------------------------- 
[echo] Environment: [echo] Java home C:\Program 
Files\Java\j2re1.4.2_06 [echo] Java version 1.4 
[echo] Build options: [echo] Generate debugging 
info on [echo] Display deprecation info off 
[echo] Optimize on [echo] Target 1.3 [echo] 
Build directory ./build [echo] Distribution 
directory ./dist [echo] Distribution archive 
name ./jakarta-slide-server-bin-2.1 [echo] 
Libraries: [echo] JAXP (1.1 or later) true 
[echo] XML DOM Level 2 API true [echo] XML SAX 2 
API true [echo] Optional Tomcat bundle: [echo] 
Tomcat (4.1.x or 5.0.x) ${catalina.dist} [echo] 
Present ${catalina.present} detect.fail: detect: 
prepare: [mkdir] Created dir: 
C:\Java\eclipse\workspace\slide-2.1\build\doc 
[mkdir] Created dir: 
C:\Java\eclipse\workspace\slide-2.1\build\doc\schema 
[mkdir] Created dir: 
C:\Java\eclipse\workspace\slide-2.1\build\doc\samples 
[mkdir] Created dir: 
C:\Java\eclipse\workspace\slide-2.1\build\doc\javadoc 
javadoc:skipped ist-xml: log4j-logger: [javac] 
Compiling 1 source file to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[javac] Note: 
C:\Java\eclipse\workspace\slide-2.1\src\wrap 
pers\log4j\Log4jLogger.java 
uses or overrides a deprecated API. [javac] 
Note: Recompile with -deprecation for details. 
[copy] Copying 1 file to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[jar] Building jar: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\lib\ 
slide-log4jlogger-2.1.jar 
jdk14-logging: [javac] Compiling 5 source files 
to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[jar] Building jar: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\lib\slide- 
jdk14logger-2.1.jar 
dist: [copy] Copying 1 file to 
C:\Java\eclipse\workspace\slide-2.1\build\classes 
[echo] Building Slide main JAR file [copy] 
Copying 1 file to 
C:\Java\eclipse\workspace\slide-2.1\build\classes\ 
org\apache\slide 
[jar] Building jar: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\ 
lib\slide-kernel-2.1.jar 
[echo] Building Slide Standard Stores JAR file 
[jar] Building jar: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\ 
lib\slide-stores-2.1.jar 
[echo] Building Default Roles JAR file [jar] 
Building jar: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\ 
lib\slide-roles-2.1.jar 
[echo] Building WebDAV Servlet JAR [jar] 
Building jar: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\ 
lib\slide-webdavservlet-2.1.jar 
[echo] Building JAAS LoginModule JAR [jar] 
Building jar: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\ 
lib\slide-jaas-2.1.jar 
[echo] Copying documentation [copy] Copying 562 
files to 
C:\Java\eclipse\workspace\slide-2.1\dist\doc 
[copy] Copying 8 files to 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\db-schema 
[copy] Copying 4 files to 
C:\Java\eclipse\workspace\slide-2.1\dist [echo] 
Copying libraries [copy] Copying 24 files to 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\lib 
all: BUILD SUCCESSFUL Total time: 2 minutes 31 
seconds 

Ant 的其他选项

现在,经过第一次构建后的项目可以运行了。本节检查部署以及 Ant build.xml 文件中的其他目标。

为本地部署运行 build.xml

Slide build.xml 文件有很多目标,以便允许 Jakarta 标准发行版,但是它还包括用于 Web Archive (WAR) 文件的目标,这些文件预先为 JAAS 认证进行了构建。现在您需要为本地部署执行一次新的构建,这将使您回到 第 1 部分 中相同的起始点。

在这一节中,您将改变 Ant,使之构建您想要的 .war 文件,并将其部署到您的本地 Tomcat 服务器上。然后对其进行测试,将它与 第 1 部分 中执行的安装进行比较。

用 webapp-dist 目标运行 build.xml

默认的构建目标并不构建 slide.war 文件,那是将 Slide 部署到一个已有的 Tomcat webapps 目录的最佳方法。在 Navigator 视图中,右键单击 slide-2.1,然后选择 Run > Ant。滚动滚动条,并选择 webapp-dist 选项旁的复选框,如图 11 所示。这将构建 slide.war 文件,您将把它复制到 Tomcat 的 webapps 目录,以便自动部署 Slide。

图 11. 用 webapp-dist 目标运行 build.xml
开放源码 <a target=CMS 入门,第 2 部分: 通过 Eclipse 构建一个新的版本,并调试和运行该版本" border="0" onload="return imgzoom(this,550);" style="cursor:pointer;" onclick="javascript:window.open(this.src);"/>

单击 Run。您将从控制台看到与清单 2 中显示的相同的构建输出,另外后面还加了以下几行:

清单 3. 相同的控制台构建输出,包含更多信息

webapp-dist: [copy] Copying 3 files to 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\conf 
[war] Building war: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\webapp\slide.war 
[war] Building war: 
C:\Java\eclipse\workspace\slide-2.1\dist\slide\webapp\slide-doc.war 
BUILD SUCCESSFUL Total time: 2 minutes 15 
seconds 

在 Navigator 视图中,右键单击 slide-2.1,然后选择 Refresh。 展开 dist/webapp 文件夹,您应该可以看到两个新生成的 .war 文件:slide.war 和 slide-doc.war。

配置新的 myslide.war 文件

为获得在相同 Tomcat 服务器上运行的两个不同的 Slide 安装,将项目中的 slide.war 文件重新命名为 myslide.war,将那个文件复制到 tomcat/webapps 目录,然后重新启动 Tomcat 服务器。这样将创建一个新的 myslide 应用程序,您可以配置和测试这个应用程序。

遵循 第 1 部分 中的说明配置您的 myslide 应用程序。但是要记得将 Domain.xml 路径改为新的位置,以免两个 Web 应用程序试图管理相同的存储。

例如,在 第 1 部分 中,您保留了 Slide 存储参数的默认设置,将文件放在 Tomcat bin 目录下。如果改变下面代码中的下列目录路径,那么就会有两个独立的文件树用于存储数据,Slide 和 myslide 都将独立地运行。

store/metadata to mystore/metadata

work/metadata to mywork/metadata

store/content to mystore/content

work/content to mywork/content

清单 4. 两个独立的文件树

<?xml version="1.0"?> <slide> 
<namespace name="slide"> 
<definition> <store name="tx"> 
 
<!-- Default lock timeout in seconds 
--> 
 
<parameter 
name="tlock-timeout">120</parameter> 
 
<!-- Default class to implement the 
nodestore interface --> 
 
<nodestore 
classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore"> 
 
<!-- The file system path where the 
metadata XML is stored relative to the JVM 
root directory, i.e., /bin. If you wanted to 
store metadata elsewhere, this is where you 
would define that, e.g., C:/mymetdata --> 
 
<parameter 
name="rootpath">mystore/metadata</parameter> 
 
<!-- The workpath is for temporary 
work-space metadata. I will discuss it further 
in future tutorials. --> 
 
<parameter 
name="workpath">mywork/metadata</parameter> 
 
<!-- The default is to defer saving metadata until 
the end of the transaction. --> 
 
<parameter 
name="defer-saving">true</parameter> 
 
<!-- Transaction timeout in seconds 
--> 
 
<parameter 
name="timeout">120</parameter> 
</nodestore> 

结束语

现在您有了自己的构建引擎,您可以生成自己的 Slide 发行版,创建新的目标,以及测试自己版本的 Slide。过些时候,当您开始扩展 Slide 时,这个 CMS 将变得更加强大:它将成为测试新想法和新代码的参考。

本系列中接下来的教程将完整地讲述设置 Eclipse 以便构建定制存储的步骤。该教程将更详细地讲述 Slide 的工作原理,并为对其他项目的更多的定制和集成打下基础。

到那时,您就可以骄傲地享用您新的 CMS,并知道这是您自己构建的。

Tags:开放 源码 CMS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接