You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Maven与Eclipse为Web项目及依赖模块创建EAR包?

如何用Maven将Web应用与Java依赖项目打包为EAR文件

没问题,我来一步步教你搞定这个需求。你已经有了TestWeb(WAR包)、TestCommon和TestModule(两个JAR依赖),接下来只需要创建一个专门的EAR项目来整合这些组件,具体操作如下:


步骤1:创建Maven EAR项目

首先,新建一个名为TestEAR的Maven项目(可以用IDE的Maven项目向导,或者手动创建目录和pom.xml文件),这个项目的核心是指定packaging为ear,并配置maven-ear-plugin来管理模块和依赖。

EAR项目的pom.xml示例

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>TestWeb</groupId> <!-- 可以和你的项目保持一致的groupId -->
    <artifactId>TestEAR</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>ear</packaging>

    <!-- 引入需要打包进EAR的所有组件 -->
    <dependencies>
        <!-- 引入你的Web应用WAR包 -->
        <dependency>
            <groupId>TestWeb</groupId>
            <artifactId>TestWeb</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <type>war</type>
        </dependency>
        <!-- 引入共享的JAR依赖 -->
        <dependency>
            <groupId>TestCommon</groupId>
            <artifactId>TestCommon</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>TestModule</groupId>
            <artifactId>TestModule</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <type>jar</type>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- 配置Maven EAR插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>3.3.0</version> <!-- 推荐使用较新的稳定版本 -->
                <configuration>
                    <!-- EAR在应用服务器中显示的名称 -->
                    <displayName>TestEAR</displayName>
                    <!-- 配置Web模块:指定上下文路径(可选,默认是artifactId) -->
                    <modules>
                        <webModule>
                            <groupId>TestWeb</groupId>
                            <artifactId>TestWeb</artifactId>
                            <contextRoot>/TestWeb</contextRoot>
                        </webModule>
                    </modules>
                    <!-- 将共享JAR打包到EAR的lib目录下 -->
                    <defaultLibBundleDir>lib</defaultLibBundleDir>
                    <!-- 自动生成application.xml描述文件(不需要手动编写) -->
                    <generateApplicationXml>true</generateApplicationXml>
                </configuration>
            </plugin>
            <!-- 保持和其他项目一致的Java版本 -->
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

步骤2:调整TestWeb项目的依赖范围

因为我们要把TestCommon和TestModule放到EAR的共享lib目录下,所以需要修改TestWeb的pom.xml,将这两个依赖的scope改为provided,避免重复打包到Web应用的WEB-INF/lib中:

修改后的TestWeb dependencies部分

<dependencies>
    <dependency>
        <groupId>TestCommon</groupId>
        <artifactId>TestCommon</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>provided</scope> <!-- 改为provided -->
    </dependency>
    <dependency>
        <groupId>TestModule</groupId>
        <artifactId>TestModule</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>provided</scope> <!-- 改为provided -->
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

步骤3:执行Maven构建命令

构建顺序(重要)

  1. 先构建并安装依赖项目到本地Maven仓库:
    • 进入TestCommon项目根目录,执行:mvn clean install
    • 进入TestModule项目根目录,执行:mvn clean install
    • 进入TestWeb项目根目录,执行:mvn clean install
  2. 最后构建EAR项目:
    • 进入TestEAR项目根目录,执行:mvn clean package

生成的EAR文件位置

构建完成后,EAR文件会生成在TestEAR/target/TestEAR-0.0.1-SNAPSHOT.ear,可以直接部署到支持EAR的应用服务器(比如JBoss、WebLogic、TomEE等)。


可选:用父Maven项目统一管理多模块

如果希望一次性构建所有项目,可以创建一个父Maven项目,将TestCommon、TestModule、TestWeb、TestEAR作为子模块:

父项目的pom.xml示例

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>TestWeb</groupId>
    <artifactId>TestParent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <!-- 指定子模块路径(根据实际目录结构调整) -->
    <modules>
        <module>TestCommon</module>
        <module>TestModule</module>
        <module>TestWeb</module>
        <module>TestEAR</module>
    </modules>
</project>

之后只需要在父项目根目录执行mvn clean install,Maven会自动按依赖顺序构建所有模块,最终生成EAR文件。


内容的提问来源于stack exchange,提问作者Pradeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:20:39