马晓峰的个人主页

如果自己就是潮水的一部分 | 怎么能看见潮流的方向呢?

2021/02/09

Maven 和 Gradle 全局排除依赖及引用外部依赖


最近公司项目数据库及 web 容器要替换成国产的,数据库替换为神通,tomcat 替换为宝兰德,所以需要排除 Spring boot 自带的一些 Jar 包同时把国产的 Jar 包添加到项目中,国产的 Jar 包没有在 Maven 中央仓库中 。

Maven 版本:3.6.0

Gradle 版本:6.4.1

Maven 排除依赖

pom.xml 文件中添加 maven-war-plugin 插件, 使用 packagingExcludes 标签进行排除

		<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>${project.basedir}/lib</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                            <filtering>false</filtering>
                        </resource>
                    </webResources>
                    <dependentWarExcludes>
                        **/services/*.json
                    </dependentWarExcludes>
                    <packagingExcludes>
                        WEB-INF/lib/tomcat-embed-*.jar
                    </packagingExcludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

其中 packagingExcludes 标签里面的是用来排除不需要的依赖的,这里表示排除以 tomcat-embed 开头的Jar

Maven 引用外部依赖(自有依赖)

pom.xml 文件中添加 maven-war-plug 插件, 使用 webResources 标签进行引用

		<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>${project.basedir}/lib</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                            <filtering>false</filtering>
                        </resource>
                    </webResources>
                    <dependentWarExcludes>
                        **/services/*.json
                    </dependentWarExcludes>
                    <packagingExcludes>
                        WEB-INF/lib/tomcat-embed-*.jar
                    </packagingExcludes>
                </configuration>
            </plugin>
        </plugins>
        <finalName>cas</finalName>
    </build>

其中 webResources 标签里面的是用来引用自有依赖的,这里表示将 ${project.basedir}/lib 目录下的内容放到 WEB-INF/lib 目录下

Gradle 排除依赖

build.gradle 文件中配置 configurations 进行排除

configurations {
    compile {
        exclude group: 'org.apache.tomcat.embed'
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
    }
}

groupmaven 中的 groupId

modulemaven 中的 artifactId

这里表示排除 grouporg.apache.tomcat.embed 的依赖及 grouporg.springframework.boot 并且 modulespring-boot-starter-tomcat 的依赖

Gradle 引用外部依赖(自有依赖)

build.gradle 文件中 dependencies 进行引用

compile fileTree(dir: 'lib', includes: ['*.jar'])

表示将 lib 目录 (以项目根路径为基准) 下所有以 jar 结尾的都引用


参考

tags: