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)。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/18380.html