读书人

施用Maven WAR插件实现多Web应用间的重

发布时间: 2012-07-18 12:05:40 作者: rapoo

使用Maven WAR插件实现多Web应用间的重迭运用

一、引言

??????? ?

Q群的朋友问道可不可以在多个Web应用间合并打包成一个WAR来发布,现实情况下也存在,比如一个某大型电子商务网站,包含有机票、酒店、旅游、VIP客户等频道,其实每个频道都是分开独立的应用,但是主站上页头和页尾是公用的,怎么把主站的公共部分无缝集成到各个频道,这就颇具现实意义了,当然这只是部分运用。还有就是在项目扩展的时候,有些项目不是通过Maven构建的,并且规定你只能在它的上面进行拓展。暂时举例说明吧,还有更多的领域可以用到,我只是抛砖引玉一下而已。

?

二、教程

?

到底有没有这样的插件来实现呢,答案是肯定的。本章给你介绍Maven WAR Plugin的<overlays>,你可称之为“重迭”或者“覆盖”。

Overlays(覆盖)主要用于跨多Web项目间共享公共资源。它能够在目标WAR本身覆盖除了原生WAR构件以外的所有文件,并在WEB-INF/lib目录下收集原生WAR项目的依赖。

下面通过一些简单的示例描述一下Overlays的功能,包括Overlays支持的类型、配置、打包过程中的执行顺序、包含/排除文件和全局配置等等。最后还简单讲了如何进行ZIP格式文件的覆盖。

??? ?? 1、Overlays总览

? 为了达到演示的效果,我们首先鉴于此架设名为documentedproject的项目结构:

?| pom.xml
?` src
???? ` main
???????? | java
???????? |?? ` com
???????? |?????? ` example
???????? |?????????? ` projects
???????? |?????????????? ` SampleAction.java
???????? | resources
???????? |?? | images
???????? |?? |?? ` sampleimage.jpg
???????? |?? ` sampleresource
???????? ` webapp
???????????? | WEB-INF
???????????? |?? ` web.xml
???????????? | index.jsp
???????????? ` jsp
???????????????? ` websource.jsp

该项目依赖于另一个WAR构件 documentedprojectdependency-1.0-SNAPSHOT.war,当然你必须在pom.xml下声明它作为当前项目的依赖:

? …
? <dependencies>
??? <dependency>
????? <groupId>com.example.projects</groupId>
????? <artifactId>documentedprojectdependency</artifactId>
????? <version>1.0-SNAPSHOT</version>
????? <type>war</type>
????? <scope>runtime</scope>
??? </dependency>
??? …
? </dependencies>
? …

接下来,我们查看documentedprojectdependency WAR文件的结构,大致如下:

documentedprojectdependency-1.0-SNAPSHOT.war

?|?? | MANIFEST.MF
?|?? ` maven
?|?????? ` com.example.projects
?|?????????? ` documentedprojectdependency
?|?????????????? | pom.properties
?|?????????????? ` pom.xml
?| WEB-INF
?|?? | classes
?|?? |?? | com
?|?? |?? |?? ` example
?|?? |?? |?????? ` projects
?|?? |?? |?????????? ` SampleActionDependency.class
?|?? |?? ` images
?|?? |?????? ` sampleimage-dependency.jpg
?|?? ` web.xml
?` index-dependency.jsp

?不出意外的话,目标WAR将产生如下的结果:

?| META-INF
?|?? | MANIFEST.MF
?|?? ` maven
?|?????? ` com.example.projects
?|?????????? ` documentedproject
?|?????????????? | pom.properties
?|?????????????? ` pom.xml
?| WEB-INF
?|?? | classes
?|?? |?? | com
?|?? |?? |?? ` example
?|?? |?? |?????? ` projects
?|?? |?? |?????????? | SampleAction.class
?|?? |?? |?????????? ` SampleActionDependency.class
?|?? |?? ` images
?|?? |?????? | sampleimage-dependency.jpg
?|?? |?????? ` sampleimage.jpg
?|?? ` web.xml
?| index-dependency.jsp
?| index.jsp
?` jsp
???? ` websource.jsp

必须提及的是,上面的web.xml文件来自于documentedproject中。

2、Overlays支持类型

WAR插件可以处理war和zip格式构件的覆盖。不过,为了保持向后兼容,zip覆盖仅仅在WAR插件的配置中明确定义了它们以后才处理。

3、配置Overlays

在WAR插件的以往版本中,配置并不总是必须的。如果你觉得使用默认设置能很好满足要求,那就继续这么做。但是如果你需要更多的控制,那么你就歹好好看看下面的部分了。

<overlay>元素包含有下列子元素:

读书人网 >Web前端

热点推荐