maven如何合并两个war到一个war项目中

本文详细介绍了如何使用Maven WAR插件进行WAR包的整合配置,包括配置依赖、指定插件及排除文件等内容,确保WAR包既能独立运行也能打包运行。

1.首先配置依赖:

dependency>  
         <groupId>org.jeecgframework</groupId>
         <artifactId>jeewx-test-web</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <type>war</type>
         <scope>runtime</scope>
   	</dependency>

这里type一定要指定war.

然后在build节点内指定plugin如下:

<!-- 合并多个war -->  
<plugin>  
	<groupId>org.apache.maven.plugins</groupId>  
	<artifactId>maven-war-plugin</artifactId>  
	<configuration>  
	<packagingExcludes>WEB-INF/web.xml</packagingExcludes>	
	<overlays>  
	<overlay>  
	<groupId>org.jeecgframework</groupId>  
	<artifactId>jeewx-test-web</artifactId>  
	</overlay>
	</overlays>  
	</configuration>
</plugin>


其他参考:

<build>  
    <plugins>  
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-war-plugin</artifactId>  
                <version>2.4</version>  
                <configuration>  
                    <overlays>  
                        <overlay>  
                            <groupId>com.chinarb.new</groupId>  
                            <artifactId>RBManagerNew-SettleAccountsModel</artifactId>  
                            <excludes> <!-- 那些文件可以忽略不,整合的时候不会将SettleAccountsModel文件整合进war中 -->  
                                <exclude>**/web.xml</exclude>  
                                <exclude>**/config/</exclude>  
                                <exclude>**/lib/</exclude>  
                                <exclude>**/com/chinarb/entity/</exclude>  
                            </excludes>  
                        </overlay>  
                        <overlay..><!-- 其他的war项目 -->  
                    </overlays>  
                </configuration>  
        </plugin>  
    </plugins>  
</build>  


如果war中有的文件是不会覆盖掉,所以如果war中文件相同.overlay节点之后的内容是无法覆盖之前的.

使用这个技术可以完成 war单独运行,也可打包运行


采用eclipse启动命令: tomcat:run-war


在使用 Maven 配置 Web 应用程序时,生成两个 WAR 包的现象通常与项目的构建配置和依赖管理有关。以下是可能导致这种情况的几个原因: 1. **Maven 构建生命周期中的不同阶段**:Maven 的构建生命周期包括多个阶段,例如 `package`、`install` 等。在某些情况下,如果项目配置了多个插件(如 `maven-war-plugin` 和其他自定义插件),可能会导致在不同的阶段生成多个 WAR 包。例如,一个 WAR 包可能在 `package` 阶段生成,而另一个则在 `install` 或其他阶段生成[^5]。 2. **多模块项目结构**:如果项目一个多模块 Maven 项目,每个子模块都可能有自己的 `pom.xml` 文件,并且每个子模块都可以独立打包成 WAR 文件。这种情况下,最终可能会生成多个 WAR 包,每个对应一个子模块[^1]。 3. **插件配置问题**:`maven-war-plugin` 是用于控制 WAR 包生成的核心插件。如果该插件被多次声明或配置不当,可能会导致生成多个 WAR 包。例如,如果在 `pom.xml` 中不小心重复声明了 `maven-war-plugin`,或者其配置参数(如 `<warName>`)设置错误,可能会导致意外生成多个 WAR 包[^3]。 4. **Spring Boot 特定行为**:对于 Spring Boot 项目,当配置为生成 WAR 包时(通过设置 `<packaging>war</packaging>`),默认情况下会生成一个包含嵌入式服务器依赖的可执行 WAR 包。同时,如果项目中存在额外的打包逻辑或插件(如 `spring-boot-maven-plugin`),可能会生成额外的 WAR 包。例如,未正确移除嵌入式 Tomcat 插件或添加了额外的依赖可能导致生成多个 WAR 包[^5]。 5. **临时文件或缓存问题**:有时,Maven 构建工具可能会因为缓存或临时文件残留而导致生成多余的 WAR 包。例如,旧版本的构建产物可能仍然存在于 `target/` 目录下,从而造成混淆。建议清理构建环境并重新执行 `mvn clean package` 命令以确保只生成预期的 WAR 包[^4]。 ### 示例代码 以下是一个典型的 `pom.xml` 配置片段,展示了如何配置 `maven-war-plugin` 来生成 WAR 包: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <warSourceDirectory>src/main/webapp</warSourceDirectory> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> ``` 如果需要排除生成多个 WAR 包的问题,可以检查上述插件是否被重复声明,或者是否有其他插件干扰了 WAR 包的生成过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JEECG低代码平台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值