排除以war方式依赖的第三方工程中某jar或资源的方法

项目以war包方式依赖了公司统一开发平台,但平台中引入druid版本较低,业务中需要更高版本的druid,需要先排除掉平台中druid包,然后引入需要的版本,实现方式记录如下:

  • 1.先在Pom中正常排除掉低版本Jar
  • 2.在maven-war-plugin中排除掉对应的jar包
  • 3.引入所需jar包

需要说明是的第二步,之前以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>是排除选项标签,将你不想引入的内容放在这里即可。