PS:說實話,在寫這篇帖子以前,我也沒用過EAR,所以該貼僅是記錄學習過程用~有什麼不對的地方,或者欠缺的,還請各位看官斧正,先謝過各位了~~ 1、基於傳統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?html
<?xml version="1.0" encoding="UTF-8"?> java
<application id="testEAR" version="1.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">
<display-name>TestEAR</display-name>
<module id="WebModule_testA">
<web>
<web-uri>testA.war</web-uri>
<context-root>.testA</context-root>
</web>
</module>web
<module id="WebModule_testB"> <web> <web-uri>testB.war</web-uri> <context-root>.testB</context-root> </web> </module> <module id="WebModule_testC"> <web> <web-uri>testC.war</web-uri> <context-root>.testC</context-root> </web> </module>
</application> apache
display-name設置部署顯示的名稱,module定義一個被包含的資源,能夠是EJB的jar,也能夠是一個子系統的war,上面這個例子中都是引入的war,所以用web做爲標籤。web-uri聲明被引入的war路徑,context-root聲明訪問路徑(相對於該EAR項目)。app
在TestEAR項目上右鍵 export 選擇EAR file,便可導出ear文件,用壓縮包程序打開TestEAR.ear文件能夠看到該ear包含的war文件。eclipse
2、基於maven-ear-plugin插件構建EAR項目 一、建立一個maven webapp,將packaging類型選爲ear <packaging>ear</packaging> 二、添加包含的war、jar等依賴,以下: [html] view plain copy print? <dependency>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>0.0.1</version>
<type>war</type>
</dependency>webapp
三、添加maven-ear-plugin插件,並配置 [html] view plain copy print? <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10</version>
<configuration>
<!-- 打包指定目錄到lib -->
<defaultLibBundleDir>lib/</defaultLibBundleDir>
<!-- 將多個war的共享包提取到父級別 -->
<skinnyWars>true</skinnyWars>
<modules>
<webModule>
<moduleId>webdemo-framework</moduleId>
<groupId>com.test</groupId>
<artifactId>framework</artifactId>
<bundleFileName>test-framework.war</bundleFileName>
</webModule>
<webModule>
<moduleId>webdemo-test</moduleId>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<bundleFileName>test.war</bundleFileName>
</webModule>
</modules>
</configuration>maven
</plugin> 學習
四、很大可能在配置完上面的內容後,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? <build>測試
<pluginManagement> <plugins> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <versionRange>[2.4.0,)</versionRange> <goals> <goal>generate-application-xml</goal> </goals> </pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> <plugins> </plugins> </build>
如此,可解除上述錯誤~