项目以war包方式依赖了公司统一开发平台,但平台中引入druid版本较低,业务中需要更高版本的druid,需要先排除掉平台中druid包,然后引入需要的版本,实现方式记录如下:
需要说明是的第二步,之前以war包方式依赖的项目较少,排除方法不太了解,经指点要通过以下方式:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> <configuration> <overlays> <overlay> <groupId>com.example.projects</groupId> <artifactId>documentedprojectdependency</artifactId> <excludes> <exclude>WEB-INF/lib/druid-1.0.9.jar</exclude> </excludes> </overlay> </overlays> </configuration> </plugin> </plugins> </build>
可排除引入war中的某个jar,上例中排除druid-1.0.9.jar,通过此方式还可以排除war中其他资源。
官网示例排除图片
<exclude>WEB-INF/classes/images/sampleimage-dependency.jpg</exclude>
更多详情见官网中关于overlays的说明,链接如下:
http://maven.apache.org/plugins/maven-war-plugin/overlays.html
—–
背景说明:
我现在要同时推进开发两个应用,分别是代码工程myportal和代码工程info-base。其中myportal工程的设计目标是做通用化组件,而info-base工程是具体的业务应用,下来我想让info-base工程开发只关注具体的业务应用,而门户、安全、日志等交给myportal来开发,那么如何实现并行开发而又无缝整合呢?
进行下面两步配置即可,完整配置参考附件。
1、依赖配置:
Java代码 收藏代码
<dependency>
<groupId>org.waddy</groupId>
<artifactId>myportal</artifactId>
<version>1.2.0-SNAPSHOT</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
注意需要依赖类型为war.
2、覆盖配置:
Java代码 收藏代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<archiveClasses>${war.archiveClasses}</archiveClasses>
<overlays>
<overlay>
<groupId>org.waddy</groupId>
<artifactId>myportal</artifactId>
<excludes>
<exclude>**/product.properties</exclude>
</excludes>
</overlay>
</overlays>
</configuration>
</plugin>
其中<excludes>是排除选项标签,将你不想引入的内容放在这里即可。