• Maven--优化依赖


    Maven 会自动解析所有项目的直接依赖和传递依赖,并且根据规则正确判断每个依赖的范围,对于一些依赖冲突,也能进行调节,以确保任何一个构件只有唯一的版本在依赖中存在。在这些工作之后,最后得到的那些依赖称为已解析依赖(Resolved Dependency)。

    查看当前项目的已解析依赖:

    1 mvn dependency:list

    查看当前项目的依赖树:

    1 mvn dependency:tree

    上面 2 个命令可以帮助我们详细了解项目中所有依赖的具体信息。

    下面这个命令可以帮助分析当前项目的依赖。

    1 mvn dependency:analyze
     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4 
     5     <groupId>org.wzh.maven</groupId>
     6     <artifactId>Demo</artifactId>
     7     <version>0.0.1-SNAPSHOT</version>
     8     <packaging>jar</packaging>
     9 
    10     <name>Demo</name>
    11     <url>http://maven.apache.org</url>
    12 
    13     <build>
    14         <plugins>
    15             <plugin>
    16                 <groupId>org.apache.maven.plugins</groupId>
    17                 <artifactId>maven-shade-plugin</artifactId>
    18                 <version>1.2.1</version>
    19                 <executions>
    20                     <execution>
    21                         <phase>package</phase>
    22                         <goals>
    23                             <goal>shade</goal>
    24                         </goals>
    25                     </execution>
    26                 </executions>
    27                 <configuration>
    28                     <transformers>
    29                         <transformer
    30                             implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
    31                             <mainClass>org.wzh.maven.test.HelloWorld</mainClass>
    32                         </transformer>
    33                     </transformers>
    34                 </configuration>
    35             </plugin>
    36         </plugins>
    37     </build>
    38 
    39     <properties>
    40         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    41     </properties>
    42 
    43     <dependencies>
    44         <dependency>
    45             <groupId>junit</groupId>
    46             <artifactId>junit</artifactId>
    47             <version>4.7</version>
    48             <scope>test</scope>
    49         </dependency>
    50         <dependency>
    51             <groupId>org.springframework</groupId>
    52             <artifactId>spring-core</artifactId>
    53             <version>4.3.9.RELEASE</version>
    54         </dependency>
    55         <dependency>
    56             <groupId>mysql</groupId>
    57             <artifactId>mysql-connector-java</artifactId>
    58             <version>5.1.10</version>
    59         </dependency>
    60     </dependencies>
    61 
    62 
    63 </project>
     1 package org.wzh.maven.test;
     2 
     3 public class HelloWorld {
     4     
     5     public String sayHello() {
     6         return "Hello Maven";
     7     }
     8     
     9     public static void main(String[] args) {
    10         System.out.print(new HelloWorld().sayHello());
    11     }
    12 
    13 }

    一个简单项目的 pom 和 仅有的一个 Java 类文件。

    list

    tree

    analyze

    Unused declared dependencied found: 意指项目中未使用的,但显式声明的依赖。需要注意的是,对于这样一类依赖,我们不应该简单地直接删除其声明,而是应该仔细分析。由于 analyze 只会分析编译主代码和测试代码需要用到的依赖,一些执行测试和运行时需要的依赖它就发现不了。

    还有一种情况,这里没有展示。

    Used undeclared dependencied:意指项目中使用到的,但是没有显式声明的依赖。这种依赖意味着潜在的风险,当前项目直接在使用它们,例如有很多相关的 Java import 声明,而这种依赖是通过直接依赖传递进来的,当升级直接依赖的时候,相关传递性依赖的版本也可能发生变化,这种变化不易察觉,但是有可能导致当前项目出错。例如由于接口的改变,当前项目中的相关代码无法编译。这种隐藏的、潜在的威胁一旦出现,就往往需要耗费大量的时间来查明真相。因此,显式声明任何项目中直接用到的依赖。

  • 相关阅读:
    jquery ajax和php实现返回值 json类型
    jQuery一句话实现多选框全选/取消
    九宫格拼图 支持44 55等
    php通过$_SERVER['HTTP_USER_AGENT']获取浏览器useAgent
    微信刮刮卡代码
    从QQ网站中提取的纯JS省市区三级联动
    Codeigniter+PHPExcel导出数据到Excel文件
    flv视频播放器停止时带图片
    html5+js实现刮刮卡效果
    解决Tensorflow 使用时cpu编译不支持警告:that this TensorFlow binary was not compiled to use: AVX AVX2
  • 原文地址:https://www.cnblogs.com/microcat/p/7232303.html
Copyright © 2020-2023  润新知