EAR项目构建的几种方式

PS:说实话,在写这篇帖子之前,我也没用过EAR,因此该贴仅是记录学习过程用~有什么不对的地方,或者欠缺的,还请各位看官斧正,先谢过各位了~~

一、基于传统WebProject方式

在eclipse中,右键new > project > Dynamic web project ,

在弹出的对话框中输入项目名称testWeb,注意,在EAR membership中勾选上“Add project to an EAR”,并输入准备创建的EAR的名称,例如TestEAR,

再创建几个Web project,此时可以选择需要加入的EAR的名称,这里,我们都选择TestEAR,

每个web project,我们都可以随意的写些测试页面,以供测试使用。

在TestEAR项目上,右键 > properties 弹出的面板中,进入 project facets条目,可以看到,该项目特征为EAR,且被选中。

在该EAR项目目录下的EarContent文件夹下创建META-INF/application.xml,该文件是设置ear打包时需要包含相关资源的配置文件。样例如下:

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <application id="testEAR" version="1.4"   
  3.     xmlns="http://java.sun.com/xml/ns/j2ee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">  
  6.     <display-name>TestEAR</display-name>  
  7.     <module id="WebModule_testA">  
  8.         <web>  
  9.             <web-uri>testA.war</web-uri>  
  10.             <context-root>.testA</context-root>  
  11.         </web>  
  12.     </module>  
  13.       
  14.     <module id="WebModule_testB">  
  15.         <web>  
  16.             <web-uri>testB.war</web-uri>  
  17.             <context-root>.testB</context-root>  
  18.         </web>  
  19.     </module>  
  20.       
  21.     <module id="WebModule_testC">  
  22.         <web>  
  23.             <web-uri>testC.war</web-uri>  
  24.             <context-root>.testC</context-root>  
  25.         </web>  
  26.     </module>  
  27. </application>  


display-name设置部署显示的名称,module定义一个被包含的资源,可以是EJB的jar,也可以是一个子系统的war,上面这个例子中都是引入的war,因此用web作为标签。web-uri声明被引入的war路径,context-root声明访问路径(相对于该EAR项目)。


在TestEAR项目上右键 export 选择EAR file,即可导出ear文件,用压缩包程序打开TestEAR.ear文件可以看到该ear包含的war文件。


二、基于maven-ear-plugin插件构建EAR项目

1、创建一个maven webapp,将packaging类型选为ear

 <packaging>ear</packaging>

2、添加包含的war、jar等依赖,如下:

[html]  view plain copy print ?
  1. <dependency>  
  2.         <groupId>com.test</groupId>  
  3.         <artifactId>test</artifactId>  
  4.         <version>0.0.1</version>  
  5.         <type>war</type>  
  6.     </dependency>  


3、添加maven-ear-plugin插件,并配置

[html]  view plain copy print ?
  1. <plugin>  
  2.     <groupId>org.apache.maven.plugins</groupId>  
  3.     <artifactId>maven-ear-plugin</artifactId>  
  4.     <version>2.10</version>  
  5.     <configuration>  
  6.         <!-- 打包指定目录到lib -->  
  7.         <defaultLibBundleDir>lib/</defaultLibBundleDir>  
  8.         <!-- 将多个war的共享包提取到父级别 -->  
  9.         <skinnyWars>true</skinnyWars>  
  10.         <modules>  
  11.             <webModule>  
  12.                 <moduleId>webdemo-framework</moduleId>  
  13.                 <groupId>com.test</groupId>  
  14.                 <artifactId>framework</artifactId>  
  15.                 <bundleFileName>test-framework.war</bundleFileName>  
  16.             </webModule>  
  17.             <webModule>  
  18.                 <moduleId>webdemo-test</moduleId>  
  19.                 <groupId>com.test</groupId>  
  20.                 <artifactId>test</artifactId>  
  21.                 <bundleFileName>test.war</bundleFileName>  
  22.             </webModule>  
  23.         </modules>  
  24.     </configuration>  
  25.   
  26. </plugin>  


4、很大可能在配置完上面的内容后,pom文件会报错,例如:

Maven Project Build Lifecycle Mapping Problem

Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-ear-plugin:2.10:generate-application-xml (execution: default-generate-application-xml, phase: generate-resources)

解决方案如下:(参考帖子>>传送门)

在plugins同级增加一组pluginManagement标签,在插件管理中,对lifecycle-mapping进行配置

[html]  view plain copy print ?
  1. <build>  
  2.           
  3.         <pluginManagement>  
  4.             <plugins>  
  5.                 <plugin>  
  6.                     <groupId>org.eclipse.m2e</groupId>  
  7.                     <artifactId>lifecycle-mapping</artifactId>  
  8.                     <version>1.0.0</version>  
  9.                     <configuration>  
  10.                         <lifecycleMappingMetadata>  
  11.                             <pluginExecutions>  
  12.                                 <pluginExecution>  
  13.                                     <pluginExecutionFilter>  
  14.                                         <groupId>org.apache.maven.plugins</groupId>  
  15.                                         <artifactId>maven-ear-plugin</artifactId>  
  16.                                         <versionRange>[2.4.0,)</versionRange>  
  17.                                         <goals>  
  18.                                             <goal>generate-application-xml</goal>  
  19.                                         </goals>  
  20.                                     </pluginExecutionFilter>  
  21.                                     <action>  
  22.                                         <ignore />  
  23.                                     </action>  
  24.                                 </pluginExecution>  
  25.                             </pluginExecutions>  
  26.                         </lifecycleMappingMetadata>  
  27.                     </configuration>  
  28.                 </plugin>  
  29.             </plugins>  
  30.         </pluginManagement>  
  31.         <plugins>  
  32.               
  33.         </plugins>  
  34.     </build>  


如此,可解除上述错误~


其他参考:

maven开发ear

使用Maven构建和部署J2EE应用程序的EAR文件

你可能感兴趣的:(EAR项目构建的几种方式)