maven 多web项目合并 Day19 2018-12-09
2018-12-09 本文已影响0人
Ernest_Chou
maven多web合并项目
多web项目合并,主要是我在网上找到的资料都不是我最终想要的效果,所以这里就介绍下我最终使用的方案,网上有很多方案都是介绍用caro插件,我到现在也不明白为什么要使用这个插件。
maven的多web模块maven-war-plugin插件的overlays属性来处理,最终主web项目pom.xml代码如下
<!-- 如果本项目中中有对peis-login项目工程的的依赖,这个配置是必不可少-->
<dependency>
<groupId>com.tianjian</groupId>
<artifactId>peis-login</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- 下面的这个配置,在集成其他war的时候,是必不可少的 -->
<dependency>
<groupId>com.tianjian</groupId>
<artifactId>peis-login</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
<build>
<finalName>peis-invoice</finalName>
<plugins>
<!-- 合并多个war -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
<overlays> <!-- 声明合并war -->
<overlay>
<groupId>com.tianjian</groupId>
<artifactId>peis-login</artifactId>
<!-- 声明排除war包中的部分 -->
<!-- <excludes>
<exclude>*/web.xml,WEB-INF/lib/*</exclude>
</excludes> -->
</overlay>
</overlays>
</configuration>
</plugin>
</plugins>
</build>
这里使用到了maven-war-plugin,用overlay属性已经足够将多web合并了,只是用的过程中需要注意以下几点:
被合并的子web项目packaging属性必须是war
被合并的子web项目,必须在主项目中添加依赖关系。
被合并的子web项目中,如果没有web.xml,则需要在pom.xml中声明
<build>
<finalName>fixflow-webapp-editor</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
做完以上几点,多web项目合并就基本上做完了,运行mvn install就会发现打出的war包中已经存在了其他子模块的项目。