maven构建工具,使用起来很简单,也正是因为简单,才会使很多项目的pom文件被写的一团糟,尤其是小团队中没有架构师护航,没有专人管理基础构建.
排除无用依赖:用 mvn dependency:analyze
检测「未使用的依赖」和「使用了但未声明的依赖」。
瘦身可执行 JAR:Spring Boot 项目可用 spring-boot-maven-plugin
的 excludes
排除不需要的依赖(如开发工具类)。
分层构建:配合 Docker 实现「依赖层缓存」,加快镜像构建(如将 BOOT-INF/lib
和 BOOT-INF/classes
分开)。
我们就运行一下mvn dependency:analyze
[WARNING] Used undeclared dependencies found:
[WARNING] com.sun.mail:jakarta.mail:jar:1.6.7:compile
[WARNING] org.springframework:spring-context:jar:5.3.24:compile
[WARNING] org.springframework:spring-core:jar:5.3.24:compile
[WARNING] org.mybatis:mybatis-spring:jar:2.0.7:compile
[WARNING] org.springframework.boot:spring-boot-test:jar:2.7.7:test
[WARNING] org.slf4j:slf4j-api:jar:1.7.36:compile
[WARNING] org.springframework:spring-web:jar:5.3.24:compile
[WARNING] com.fasterxml.jackson.core:jackson-annotations:jar:2.13.4:compile
[WARNING] org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.70:compile
[WARNING] org.springframework:spring-beans:jar:5.3.24:compile
[WARNING] jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[WARNING] com.google.code.gson:gson:jar:2.9.1:compile
[WARNING] org.springframework:spring-tx:jar:5.3.24:compile
[WARNING] org.springframework:spring-aop:jar:5.3.24:compile
[WARNING] com.alibaba:easyexcel-core:jar:4.0.3:compile
[WARNING] com.aliyun:openapiutil:jar:0.1.3:compile
[WARNING] com.fasterxml.jackson.core:jackson-databind:jar:2.13.4.2:compile
[WARNING] org.springframework:spring-test:jar:5.3.24:test
[WARNING] com.zaxxer:HikariCP:jar:4.0.3:compile
[WARNING] javax.activation:javax.activation-api:jar:1.2.0:compile
[WARNING] org.mybatis:mybatis:jar:3.5.9:compile
[WARNING] org.springframework.boot:spring-boot:jar:2.7.7:compile
[WARNING] org.springframework.data:spring-data-redis:jar:2.7.6:compile
[WARNING] org.bouncycastle:bcprov-jdk15on:jar:1.65:compile
[WARNING] org.springframework:spring-jdbc:jar:5.3.24:compile
[WARNING] org.springframework.boot:spring-boot-autoconfigure:jar:2.7.7:compile
[WARNING] org.springframework.data:spring-data-commons:jar:2.7.6:compile
[WARNING] org.springframework:spring-webmvc:jar:5.3.24:compile
[WARNING] org.springframework.boot:spring-boot-actuator:jar:2.7.7:compile
[WARNING] Unused declared dependencies found:
[WARNING] org.springframework.boot:spring-boot-starter:jar:2.7.7:compile
[WARNING] org.springframework.boot:spring-boot-starter-mail:jar:2.7.7:compile
[WARNING] org.springframework.boot:spring-boot-starter-web:jar:2.7.7:compile
[WARNING] org.springframework.boot:spring-boot-starter-thymeleaf:jar:2.7.7:compile
[WARNING] org.springframework.boot:spring-boot-starter-actuator:jar:2.7.7:compile
[WARNING] com.tencentcloudapi:tencentcloud-sdk-java:jar:3.1.322:compile
[WARNING] com.tencentcloudapi:tencentcloud-sdk-java-ocr:jar:3.1.322:compile
[WARNING] com.mysql:mysql-connector-j:jar:8.0.31:compile
[WARNING] org.springframework.boot:spring-boot-starter-jdbc:jar:2.7.7:compile
[WARNING] org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:2.2.2:compile
[WARNING] com.github.pagehelper:pagehelper-spring-boot-starter:jar:1.4.6:compile
[WARNING] org.codehaus.janino:janino:jar:3.1.8:compile
[WARNING] org.bouncycastle:bcprov-jdk15to18:jar:1.68:compile
[WARNING] com.google.zxing:javase:jar:3.4.1:compile
[WARNING] com.googlecode.libphonenumber:prefixmapper:jar:2.231:compile
[WARNING] org.apache.poi:poi-ooxml-schemas:jar:4.1.2:compile
[WARNING] net.sf.saxon:saxon-dom:jar:8.7:compile
[WARNING] org.apache.commons:commons-csv:jar:1.8:compile
[WARNING] com.alibaba:easyexcel:jar:4.0.3:compile
[WARNING] joda-time:joda-time:jar:2.10.1:compile
[WARNING] org.springframework.boot:spring-boot-devtools:jar:2.7.7:compile
[WARNING] org.springframework.boot:spring-boot-starter-aop:jar:2.7.7:compile
[WARNING] org.springframework.boot:spring-boot-configuration-processor:jar:2.7.7:compile
[WARNING] org.springframework.boot:spring-boot-starter-test:jar:2.7.7:test
[WARNING] javax.servlet:jstl:jar:1.2:compile
[WARNING] com.aliyun:dysmsapi20170525:jar:2.0.1:compile
[WARNING] com.aliyun:tea-console:jar:0.0.1:compile
[WARNING] com.aliyun:darabonba-env:jar:0.1.1:compile
[WARNING] com.aliyun:darabonba-time:jar:0.0.1:compile
[WARNING] com.aliyun:darabonba-string:jar:0.0.3:compile
[WARNING] com.squareup.okio:okio:jar:3.6.0:compile
[WARNING] org.springframework.boot:spring-boot-starter-data-redis:jar:2.7.7:compile
[WARNING] org.projectlombok:lombok:jar:1.18.30:compile
[WARNING] taobao-sdk-java-auto-source:taobao-sdk-java-auto-source:jar:1.0:system
[WARNING] bcprov-jdk15on:bcprov-jdk15on:jar:1.0:system
这些警告来自 Maven 的dependency:analyze
插件(或类似分析工具),用于检测依赖管理的不规范。具体分为两类:Used undeclared dependencies
(使用了但未显式声明)和Unused declared dependencies
(声明了但未使用)。下面详细解释并提供解决建议:
Used undeclared dependencies
(使用了但未显式声明)指项目代码中直接使用了某个依赖的类 / 方法,但该依赖并未在pom.xml
中显式声明,而是通过其他依赖间接传递引入的。
风险:传递依赖的版本可能随其他依赖的升级而变化,导致项目稳定性下降(例如:A 依赖 B,B 依赖 C 的 1.0 版本;若 B 升级后依赖 C 的 2.0 版本,可能引发不兼容)。
Unused declared dependencies
(声明了但未使用)指pom.xml
中显式声明了依赖,但项目代码从未直接使用过其类 / 方法(可能是冗余依赖,或仅通过传递依赖被间接使用)。
风险:增加打包体积,可能引入不必要的依赖冲突。
犹豫这个老项目是领导写的,我一改他的项目就会被说,所以我只能分析分析,上手改就算了,会挨骂.