上一篇
要创建EAR包,使用
jar命令打包应用描述符和模块文件,基本命令格式如下:,“
bash,jar cvf 应用名.ear META-INF/application.xml 模块1.war 模块2.jar 其他资源,`
,关键步骤:创建包含application.xml
的META-INF
目录,执行打包命令生成.ear`文件。
什么是EAR包?
EAR(Enterprise Archive)是Java EE企业级应用的标准化部署格式,包含多个模块(如WAR、JAR、EJB-JAR)及全局配置文件,用于在应用服务器(如WebLogic、WildFly)中统一部署。
创建EAR包的两种主流方式
▶ 方法一:使用Apache Maven构建(推荐)
<!-- 步骤1:在父POM中定义打包类型 -->
<packaging>ear</packaging>
<!-- 步骤2:配置maven-ear-plugin -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<!-- 指定子模块 -->
<modules>
<webModule>
<groupId>com.example</groupId>
<artifactId>webapp</artifactId>
<contextRoot>/myapp</contextRoot>
</webModule>
<ejbModule>
<groupId>com.example</groupId>
<artifactId>ejb-service</artifactId>
</ejbModule>
</modules>
<!-- 生成application.xml -->
<generateApplicationXml>true</generateApplicationXml>
</configuration>
</plugin>
</plugins>
</build>
执行命令:
mvn clean package
生成路径:target/your-project-1.0.ear

▶ 方法二:手动命令行打包(JDK原生)
# 步骤1:创建标准目录结构
myapp.ear
├── META-INF
│ └── application.xml # 部署描述符
├── webapp.war # Web模块
└── services.jar # EJB模块
# 步骤2:编写application.xml
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"
version="7">
<module>
<web>
<web-uri>webapp.war</web-uri>
<context-root>/myapp</context-root>
</web>
</module>
<module>
<ejb>services.jar</ejb>
</module>
</application>
# 步骤3:执行打包命令
jar cvf myapp.ear -C ear-dir .
关键配置文件说明
-
application.xml(必需)
定义模块组成与依赖,需包含:<application-name>MyEnterpriseApp</application-name> <initialize-in-order>true</initialize-in-order>
-
jboss-deployment-structure.xml(可选)
用于WildFly服务器的模块依赖配置。
验证EAR包完整性
# 查看包内文件列表 jar tf myapp.ear # 检查描述符有效性 unzip -p myapp.ear META-INF/application.xml | xmllint --noout -
成功提示:META-INF/application.xml validates OK

常见问题排查
| 问题现象 | 解决方案 |
|---|---|
| 部署时找不到模块 | 检查application.xml中路径 |
| ClassNotFound异常 | 确认依赖JAR已包含在EAR/lib |
| 上下文路径冲突 | 修改<context-root>唯一值 |
最佳实践建议
-
版本管理
在META-INF/MANIFEST.MF中添加版本信息:Implementation-Version: 2.1.0 Built-By: Your-Dev-Team -
依赖管理
将通用库放入EAR/lib目录,避免模块重复包含。 -
安全配置
在application.xml中启用安全约束:
<security-role> <role-name>admin</role-name> </security-role>
引用说明:本文操作遵循Java EE 7规范,参考Oracle官方部署指南及Apache Maven文档,服务器兼容性请查阅具体应用服务器文档(如WildFly 26+或WebLogic 14c)。
