上一篇                     
               
			  如何用命令打ear包?
- 电脑教程
- 2025-06-10
- 2566
 要创建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)。
 
  
			 
			 
			 
			 
			 
			 
			 
			