操作实践:maven工程查找工程中多余的jar包

声明:迁移自本人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,符合代码中的实际情况。

转载于:https://www.cnblogs.com/xsl-thumb-rfcs/p/9941593.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将两个 Maven 工程成一个 JAR 的方法如下: 1. 在第一个 Maven 工程的 pom.xml 文件,添加以下代码: ``` <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <appendAssemblyId>false</appendAssemblyId> <finalName>${project.artifactId}-${project.version}</finalName> <archive> <manifest> <mainClass>com.example.MainClass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 2. 在第二个 Maven 工程的 pom.xml 文件,添加以下代码: ``` <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.1.2</version> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <includeScope>runtime</includeScope> <outputDirectory>${project.build.directory}/lib/</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 3. 在第二个 Maven 工程的 src/main/resources/META-INF 目录下,新建一个 MANIFEST.MF 文件,并添加以下代码: ``` Manifest-Version: 1.0 Class-Path: lib/ ``` 4. 执行以下命令来打两个 Maven 工程: ``` cd first-maven-project mvn clean package cd ../second-maven-project mvn clean package ``` 5. 将第一个 Maven 工程的 target 目录下的 JAR 和第二个 Maven 工程的 target 目录下的 JAR 一起复制到一个新的目录。 6. 执行以下命令来将两个 JAR 合并成一个 JAR : ``` cd new-directory jar -xf first-maven-project.jar jar -xf second-maven-project.jar jar -cmf second-maven-project/META-INF/MANIFEST.MF merged.jar * ``` 7. 最后,运行 merged.jar 文件即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值