声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635

版本迭代过程中对jar的依赖可能会产生变化,一些本不必再依赖的jar包可以因为没有清除而依然留在版本的发布包中,这些多余的jar包一方面使得版本包变大,另一方对这些jar包的加载延长了系统启动时间,消耗了更多的虚拟机内存。所以清理这些无用的jar包是非常必要的。
使用 mvn dependency:analyze可以识别出的未使用的依赖项。清理完后建议实际运行,就可以找出来了哪些jar包确实不依赖的。因为在实际的开发中,比如java后端开发,很多依赖在代码中没有直接体现,但是在web.xml等中配置的类依赖该jar。
这里举个例子说明下依赖处理问题。
注:pom.xml没有配置打包成jar包所需的build信息。

package com.test.testdependency;

import org.apache.commons.lang3.StringUtils;

public class MoveRedundantDependency {
public boolean test(String str)
{
return StringUtils.isEmpty(str);
} public void main(String[] args) {
System.out.println(test("test"));
}
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId>
<artifactId>testdependency</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging> <dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.46</version>
</dependency>
</dependencies>
</project>

执行mvn dependency:analyze,运行结果如下。

[INFO] --- maven-dependency-plugin:2.8:analyze (default-cli) @ testdependency ---
[WARNING] Unused declared dependencies found:
[WARNING] com.alibaba:fastjson:jar:1.2.46:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

如上,命令执行后发现了无关的依赖项com.alibaba:fastjson:jar,符合代码中的实际情况。

操作实践:maven工程查找工程中多余的jar包的更多相关文章

  1. (转)如何在maven的pom.xml中添加本地jar包

    1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将 ...

  2. (转)如何在maven的pom.xml中添加本地jar包

    转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...

  3. maven导出工程pom文件中依赖的jar包

    在工程的pom文件里加上下面plugin, 然后执行mvn clean package -Dmaven.test.skip=true命令,就可以lib包收集起来了 <plugin> < ...

  4. SqlServer查找表中多余的重复记录

    1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from ...

  5. maven在pom文件中引入了icepdf-core包,pom文件却莫名的报错,说jai_core包missing

    maven在pom文件中引入了icepdf-core包,却莫名的报错,说jai_core包missing,把这个jai_core包引入之后还是一样报错,PS:icepdf-core使用的时候不用引用j ...

  6. 只要项目是maven构建的,pom.xml中依赖的jar包全都默认去你电脑本地仓库去找

    只要项目是maven构建的,pom.xml中依赖的jar包全都默认去你电脑本地仓库去找

  7. Maven中使用本地JAR包

    在Maven项目中使用本地JAR包有两种方法: 1. 使用system scope <dependencies> <dependency> <groupId>org ...

  8. Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  9. idea在maven中引入了jar包依赖,但是编译过程中报出XXX程序包不存在,已解决

    idea在maven中引入了jar包依赖,但是编译过程中报出XXX程序包不存在 1. 报错具体情况 2. Project Structure中的Libraries没有任何红色波浪线 3. 发现自己要引 ...

随机推荐

  1. mysql concat与concat_ws区别

    select concat('大','小') as size from 表 查询出结果为:大小 select concat('大',NULL) as size from 表 查询出结果为:null c ...

  2. python进阶 廖雪峰(慕课网)

    1.函数式编程 变量名可以指向函数,那么函数就可以通过一个变量传递给另一个函数或者变量. map()函数:接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到 ...

  3. JAVA笔记03 变量和运算符 面试题以及笔记

    标识符的命名规则需要注意哪几点? 定义 就是给类,接口,方法,变量等起名字的字符序列 组成规则 英文大小写字母 数字 $和_ 注意事项 不能以数字开头 不能是java中的关键字 区分大小写 常见的命名 ...

  4. How To Configure NFS Client on CentOS 8 / RHEL 8

    https://computingforgeeks.com/configure-nfs-client-on-centos-rhel/

  5. (三)微信小程序配置

    小程序官方文档 全局配置

  6. 关于无法下载sklearn中的MNIST original数据集的问题

    在使用Sklearn进行加载自带的数据集MNIST时,总是报错,代码及相应的错误显示如下: from sklearn.datasets import fetch_mldata mnist = fetc ...

  7. L2d插件

    <script src="https://blog-static.cnblogs.com/files/yyhh/L2Dwidget.min.js"></scrip ...

  8. Live555研究之一 源代码编译

    Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现了对多种音视频编码格式的音视频数据的流化 ...

  9. ES6与ES5的继承

    ES6 ES6中的类 类与ES5中的构造函数写法类似 区别在于属性要放入constructor中,静态方法和属性实列不会继承 <script> class Person{ height=& ...

  10. css布局 -双飞翼布局&圣杯布局

    一,双飞翼布局 左右两边固定,中间可以随着浏览器放大和缩小 <!DOCTYPE html> <html lang="en"> <head> &l ...