本文旨在说明如何使用 Apache Maven 2项目来为BEA WebLogic Portal创建构建系统。Maven是一种广泛应用于Apache项目的开源构建系统。它提供了许多Ant所不具备的功能,其中最为引人注目的当属依赖 项管理功能。关于Maven和Ant之间的争论一直以来都很激烈,本文不会探讨这一问题,而是重点介绍WebLogic Portal和Maven 2协同工作的问题。
本文主要针对了解Maven 2以及熟悉其基本功能的用户。如果您之前没有接触过Maven,请首先阅读免费电子书 Better Builds with Maven 2 。
安装Maven
首先,从Maven网站http://maven.apache.org 下 载并安装Maven 2。Maven程序可以安装在任何文件系统中,但是最好不要安装在特定项目目录下,因为不同的项目可能都需要调用Maven程序。
安装好Maven后,接下来就要创建命令文件以初始化Maven环境。举例如下;尽管在Linux或Solaris系统中创建同样文件也很简 单,但该文件主要面向Windows系统。
set BEA_HOME=C:\bea92
set M2_HOME=C:\java\maven-2.0.4
set JAVA_HOME=%BEA_HOME%\jdk150_04
set path=%JAVA_HOME%\bin;%path%;%M2_HOME%\bin
mvn --version
该脚本设置了某些需要应用于构建环境的环境变量。很明显,您应该通过改变BEA_HOME、JAVA_HOME和M2_HOME的变量值来反射 特定环境。为了确保脚本的正确性,在结束处运行了Maven 版本命令。这个命令显示了当前所使用的Maven的版本。
创建Maven储存库
Maven的一个关键功能就是依赖项管理。一个依赖于某种资源的构件声明了一个在Maven build文件中的依赖项,同时定义了依赖项的组、名称以及版本。在调用构件时,Maven通过从库中获取必要的资源来处理资源依赖项。为了简化处理过 程,Maven 在http://repo1.maven.org/maven2保留了一个大型储存库,其中包含了大多数像Spring这样的流行开源框架。
令人遗憾的是,为了避免侵犯版权和许可协议,该储存库不能承载商业资源,例如WebLogic库等。因此,接下来需要把WebLogic库安装 在本地储存库中。开发者很可能在刚开始的时候,会不假思索去尝试使用系统级作用域来访问文件系统中的资源,但是不久就会意识到在共享库时,这样做是徒劳 的。另外需要强调的是,这种做法与Maven的理念背道而驰,所以最好不要尝试这样做。
安装单机版JAR
在BEA主目录下安装单机版JAR很简单。下面是从一段脚本中摘录的样本行,它展示了如何通过使用Maven安装插件和install- file goal来进行安装。出于简洁期间,这里仅仅显示了一行;完整的脚本在示例代码中。这段脚本假定为您正在使用WebLogic Portal v9.2。如果您已经安装MP1或更新的版本,建议在脚本中更新相应的版本号。
mvn install:install-file
-Dfile=%BEA_HOME%\weblogic92\server\lib\weblogic.jar
-DgroupId=weblogic-server
-DartifactId=weblogic
-Dversion=9.2.0
-Dpackaging=jar
-DgeneratePom=true
Maven的资源保存在一个储存库中,这个储存库有组标识符、工件标识符以及版本号。组标识符用于组合类似的工件。在上面的例子中,我们用 weblogic-server 来组合服务器特定的WebLogic 工件。在下文中我们还会介绍weblogic-Portal和weblogic-common组。工件标识符专门用于标识特定的工件。为保证清晰明了,我 们建议用JAR的名称来命名工件标识符。
要注意的是,本文重点讨论的是组和工件标识符。开发者可以随意使用分层和命名约定,但是任何变动必须在本文论及到的所有构建工件中反映出来。
一旦WebLogic 资源放入库后,在Maven项目目标模型(POM) 中引用资源就变得很简单。至于先前在储存库中安装 weblogic.jar 的例子,我们可以在pom.xml中创建一个依赖项,如下所示:
<dependency>
<groupId>weblogic-server</groupId>
<artifactId>weblogic</artifactId>
<version>9.2.0</version>
<scope>provided</scope>
</dependency>
要注意,组和工件标识符以及版本就是我们在Maven储存库中安装weblogic.jar的内容。而假定作用域仅仅表明资源在运行时提供,并 且仅仅用于编译目的。
使用共享库
很遗憾,我们现在面临着一个更为艰难的挑战,就是要将WebLogic共享库安装在储存库中。一个共享库可以是一份Web或企业文档,其在运行 时内与与应用程序归并。应用程序在EAR 的weblogic-application.xml或WAR的weblogic.xml中声明基于共享库的依赖项。这些共享库包含了诸如JAR的大量文 件资源。
麻烦的是,Java编译器javac不能从共享库中提取JAR文件来完成编译。在WebLogic Workshop中有一个插件能够将所有共享库扩展到一个插件目录下,这样JAR文件就能被编译器识别处理。
在Maven中,要访问共享库,我们需要将每个共享库中的工件 安装到储存库中。为了实现这个目标,我在本文中编写了一个命名为maven-weblogic-library-plugin 的maven小插件。除了在储存库中安装一个或多个共享库以外,这个插件和Maven中安装的插件功能类似。下例说明了它的执行方式:
mvn weblogic-maven:maven-shared-library-plugin:install-library
-DgroupId=weblogic-portal
-Ddirectory=%BEA_HOME%/weblogic92/portal/lib/modules
-DdefaultVersion=9.2.0
这个插件既可以通过-Dlibrary指令安装一个单独的共享库,也能将所有的库安装在指定的目录下,就像上面显示的一样。以上指定的 groupId是一个根组,共享库就安装在里面。插件程序能自动为文件库工件创建一个二级组,而且库的工件与库本身同名。在这个二级组中,共享库中的每一 个工件将和库本身的副本一起安装。最后,创建一个母项目目标模型(POM)工件,以便创建库中所有工件的依赖项。这样在配置build时,就减少了为每一 个工件创建依赖项的工作量。
版本控制
maven-weblogic-library-plugin插件允许开发人员指定共享文件库的默认版本。当共享库名称不包含版本号时,我们就 可以用插件来指定版本。如果安装了一个例如beehive-controls-1.0.ear的共享库,版本号就可以从名称中提取(如本例中为1.0), 而不是来自于默认版本号。
创建 maven-weblogic-library-plugin 插件
可以进入示例代码中的/maven/maven-weblogic-library-plugin文件夹并执行mvn:install之前的 mvn:package命令来创建新的插件文件。切记一定要先用前文论述的内嵌的maven.bat文件来初始化Maven环境。
安装共享库
有了插件文件,下一步就要将所有的共享库安装在储存库中。示例代码中有一段脚本install-weblogic- libraries.bat,它向我们说明了应该如何实现这一任务。
正如先前论述的一样,一旦共享库安装完毕,我们就可以通过已由插件创建好的母POM将依赖项添加进来。比方说要声明一个p13n-app- lib.ear 共享库中的依赖项,我们就可以在pom.xml中使用下述依赖项声明:
<dependency>
<groupId>weblogic-common.p13n-app-lib</groupId>
<artifactId>p13n-app-lib-parent</artifactId>
<version>9.2.0</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
创建项目目标模型
准备工作完成后,就可以创建POM文件并且应用Maven来构建我们想要的门户应用程序了。但是首先,关于WebLogic 工作平台下门户项目架构还要强调一点是,Maven是一款基于惯例优先理念的软件工具;这意味着它认为一切都是按照某种方式而布置。至于门户项目结 构,Maven具有一种针对Java 和 Web项目的结构,建议尽可能使用这种结构。
使用Maven的结构很方便;创建WebLogic门户WAR时,只要指定下图所示的资源路径和Web内容目录即可。请注意这是建议结构,如果 您现在的项目正在使用默认路径,您仍然可以配置Maven来创建该项目。但是,还需要在POM中进行额外的配置以传达Maven路径的变动。
图1.. Eclipse New Portal Web Project对话框
至于WebLogic门户EAR,默认结构可以在Maven中正常运行,无需任何变动。
最后,关于项目结构我们强烈建议创建一个新的项目并且将该项目的源代码放在工作空间以外的单独目录下。由于无需检查多余的工作空间工件,这将使 得源代码控制管理更为容易。下方的样本结构图可说明这一点:
图2:项目结构示例.
现在我们就可以为应用程序的各个部分创建POM文件了。POM文件总共有三种,在下文我们会对之进行论述。请记住示例代码中包含每个POM的完 整版本;这样我们只需在下文重点讲述每个POM的主要方面,特别是与创建WebLogic 门户应用程序有关的方面。在Maven站点中有很多关于如何创建和使用POM的文章,这里就不再赘述了。
父POM
第一个要创建的POM是父POM。有了父POM,我们既可以创建EAR,也可以创建WAR作为一个单元,同时允许集中设置。在Maven中,每 一个工件,比如EAR和WAR,是单独的实体。您可以将它构建并部署为一个单元。
在这个父POM中,我们为portalEAR和portalWAR项目声明模块。如下所示:
<modules>
<module>portalEAR</module>
<module>portalWAR</module>
</modules>
这项声明使我们能够同时创建两个项目。这样做只是为了方便,而并非是必需的,因为portalEAR在POM中也声明了一个基于 portalWAR的依赖项。因此,如果之前没有创建war文件,Maven会自动创建。
接下来,就要设置maven-compiler-plug-in以使 target JDK 5为编译做好准备。如下所示:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
Web应用程序POM
Web应用程序POM可用来创建以portalWAR项目为代表的WAR。总的来说,创建WebLogic portal WAR与创建一个标准的Java EE WAR没什么两样。但是,假若WebLogic门户应用程序使用颇具代表性的页面流和Beehive注释,我们当然要做到支持注释。
JDK包含了一个注释处理工具(APT),而Maven 2中的maven-apt-plugin插件也配有这样的工具,可以在 这里 找到它。在撰写本文时,maven-apt-plugin插件中还存在一些小问题,导致其不能在WebLogic 门户应用程序中顺畅运行。我已经将纠正这些缺陷的补丁放进了示例代码中,只需在maven-apt-plugin目录下运行mvn:package和 mvn:install命令既可安装。为了避免版本冲突,用-BEA给该版本作了标记。
出于本文发布时间的原因,maven-apt-plugin已经得到了纠正并且对发现的缺陷也进行了修改。这样就可以选择使用本文中的插件或是maven-apt-plugin的快照版本。如果您在使用 maven-apt-plugin的快照版本,那就不再需要sourcePath配置选项,可以从portalWAR 项目中的pom.xml中删除。
用Maven来处理注释很简单,POM中的该部分功能具体如下:
<plugin>
<groupId>org.apache.myfaces.tobago</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>1.0.10-BEA</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<generated>.apt_generated</generated>
<aptOptions>
x=3,
web.content.root=${basedir}/src/main/webapp
</aptOptions>
<target>1.5</target>
<nocompile>true</nocompile>
<showWarnings>true</showWarnings>
<verbose>false</verbose>
<fork>false</fork>
<sourcePath>${basedir}/src/main/java</sourcePath>
</configuration>
</execution>
</executions>
</plugin>
其中最关键的一点就是将web.content.root属性指向Web内容源目录,因为Beehive注释处理器需要调用该参数。另一个重要 参数是sourcePath。因为APT工具需要调用sourcePath,该参数被添加到了打过补丁的maven-apt-plugin插件。
最后一个关键点就是各种WebLogic Server和WebLogic Portal库以及共享库的依赖项。它们在POM的最底层,通过下载示例代码可以进行查看。
企业级应用程序POM
portalEAR项目中的POM大致上是一个标准的POM,可以被任何Java EE应用程序调用。配置maven-ear-plugin如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<displayName>
Portal Maven2 Sample Application
</displayName>
<description>
Portal Maven2 Sample Application
</description>
<version>1.4</version>
<earSourceDirectory>EarContent</earSourceDirectory>
<earSourceExcludes>**/application.xml</earSourceExcludes>
<modules>
<webModule>
<groupId>portal-maven2-sample</groupId>
<artifactId>portalWAR</artifactId>
<contextRoot>/portalWAR</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>
这里唯一要强调的一点是,这里不包含application.xml文件,我们需要让Maven生成该文件。这样做很有必要,因为依照 Maven的规则,在生成一个带附加版本号的portalWAR的同时,Maven还将生成application.xml以确保模块名称是正确的。
创建应用程序
既然现在一切都准备就绪,创建门户应用程序就变得易如反掌,只要在/应用程序目录下运行mvn:package命令即可。如果您查看 portalWAR和portalEAR文件夹下的目标目录,就可以分别看到WAR和EAR的副本。
示例代码
本文提供了一份文档,该文档包含了一个示例WebLogic门户应用程序。所有使用Maven 2构建应用程序所需的资源都包含在里面。要使用该示例,只需打开该文档包并确保路径被保留,然后修改maven/scripts/maven.bat文件 使之指向BEA以及Maven主目录所在的位置即可。
教学示例代码 (zip)
概述
只需付出一点努力,用户就可以使用Maven 2来创建WebLogic门户应用程序。Maven 2 中大量的功能使之成为众多机构的选择。相信本文能够帮助众多用户来实现Maven 2和WebLogic的集成。
资源
•Maven- Maven Apache 项目
•Better Builds with Maven 2- Megere编写的关于Maven 2的免费电子书
作者简介
Gerald Nunn 是BEA Systems Professional Services的业务首席顾问。他已经结婚了,有一个4岁的儿子,生活在加拿大多伦多北部的纽马基特小镇。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cnham/archive/2010/06/08/5656380.aspx
分享到:
相关推荐
- **执行部署**:选择立即部署或计划部署,WebLogic会解析应用包,创建应用实例,并启动应用程序。 4. **管理控制台**:WebLogic提供了一个基于Web的管理控制台,用于监控和管理服务器实例、域、应用程序和部署。...
WebLogic Server,由Oracle公司开发,是一款广泛使用的Java EE应用服务器,提供了全面的中间件服务来支持分布式应用程序的运行。 1. **WebLogic Server安装与启动** 在部署应用程序之前,你需要首先安装WebLogic ...
如何使用 Maven 创建一个 Java Web 项目(Spring MVC)。 用到的技术/工具: Maven 3.3.3 Eclipse 4.3 JDK 8 Spring 4.1.1.RELEASED Tomcat 7 Logback 1.0.13
【使用Maven搭建S2SH工程详解一:创建Struts2工程】 在Java Web开发中,S2SH架构(Struts2 + Spring + Hibernate)是一种常见的应用框架组合,用于构建高效、灵活的企业级应用程序。本篇文章主要讲解如何利用Maven...
IDEA 使用 Maven 创建 Web 项目详细教程 本教程将指导您使用 IDEA 创建一个 Maven Web 项目,从安装 Maven 到配置 Maven 环境、创建 Maven 工程、pom.xml 文件配置、依赖管理等。 1. 安装 Maven 在 IDEA 中使用 ...
* webapp:存放web应用程序的文件夹 本文介绍了基于maven创建web项目的步骤,包括搭建maven环境、集成maven到Myeclipse2013和创建maven架构下的WEB工程。通过这篇文章,读者可以学习到如何使用maven来构建和管理web...
【使用Maven开发Java Web应用】的详细指南 在Java Web开发中,管理各种框架的jar包及其依赖是一项挑战。传统的构建工具Ant逐渐被Maven和Gradle等更先进的工具取代,尤其是Maven,它提供了强大的依赖管理和项目构建...
### 使用Idea14.1.4和Maven创建Java Web项目 #### 一、概述 在本篇文章中,我们将详细介绍如何使用IntelliJ IDEA 14.1.4版本结合Maven来创建一个Java Web项目。这种方法不仅能够提高开发效率,还能确保项目的结构...
在不使用Maven的情况下,在Eclipse中创建Spring Boot工程,你需要手动管理依赖的jar包。以下是一些关于这些jar包及其在Spring Boot项目中的作用的关键知识点: 1. **jboss-logging-3.3.0.Final.jar**:这是一个日志...
使用Maven创建Web应用程序项目 Maven POM Maven 构建生命周期 Maven 构建配置文件 Maven存储库 Maven插件 Maven创建Java项目 使用Maven构建和测试Java项目 Maven外部依赖 Maven项目文档 Maven项目模板 Maven快照 ...
maven-webstart 使用 Maven 构建 Java Webstart 应用程序的模板。 此存储库包含多个示例项目,用于使用 Maven 构建 Java Webstart 应用程序。 不同的配置: 使用 JnlpDownloadServlet 使用自定义的 Jsp 作为 jnlp 而...
maven-weblogic-plugin-1.0.0.jar
本项目是基于Idea与Maven创建的Web应用程序,旨在展示如何在Idea中设置和操作Maven项目。 【描述】:“第一次使用maven在idea上创建的项目,配合着博客一块看。” 对于初学者来说,理解Idea与Maven的结合使用可能...
在本文中,我们将探讨如何使用 Maven 创建一个 Web 应用程序,包括环境配置、IDE 集成以及项目结构的设置。 **1. Maven 安装与配置** 首先,你需要从 Maven 官方网站下载最新版本的 Maven,解压缩后设置环境变量 ...
在本文中,我们将深入探讨如何使用 Maven 3 创建一个基本的 Web 应用程序。 ### Maven 的基本概念 1. **项目对象模型 (Project Object Model, POM)**: Maven 使用 XML 文件(通常命名为 `pom.xml`)来定义项目的...
本文将深入探讨如何在Eclipse中利用Maven创建一个Web应用程序项目。 首先,我们需要理解“Eclipse使用Maven无法建web项目”这个问题可能涉及到的几个关键点。在Eclipse中创建Maven Web项目时,可能会遇到诸如Maven...
WebLogic Server是Oracle公司提供的一个企业级应用服务器,主要用于部署和管理Java EE(Enterprise Edition)应用程序。为了在Eclipse中方便地开发、调试和管理WebLogic应用,Oracle提供了WebLogic插件。本文将详细...
与Eclipse中的Maven插件不同,这个资源提供的"maven2免安装程序"是一个独立的版本,不需要正式的安装过程,只需将它配置到系统环境变量中即可使用。 在开始使用maven2之前,首先需要理解它的核心概念——项目对象...
标题中的“桌面应用程序(maven+sqlite)(自用demo)”表明这是一个基于Java开发的桌面应用,使用了Maven作为项目管理和构建工具,SQLite作为本地数据库存储数据的示例项目。这个项目可能是为了个人学习或者实践目的...