zoukankan      html  css  js  c++  java
  • maven使用杂记

    为maven的编译、运行指定不同的jdk,有两种方式

    参考:Compiling Sources Using A Different JDK

    1. 最好的就是用Toolchainstool 插件,这个插件可以为包括compiler在内的其他诸多插件制定jdk版本,以及其他工具的版本(如果这些插件需要使用的话)。具体参考:Guide to Using Toolchains

    2. 其次是在maven-compiler-plugin插件中做配置,如下:

    <project>
      [...]
      <build>
        [...]
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
              <verbose>true</verbose>
              <fork>true</fork>
              <executable><!-- path-to-javac --></executable>
              <compilerVersion>1.3</compilerVersion>
            </configuration>
          </plugin>
        </plugins>
        [...]
      </build>
      [...]
    </project>
    
    1. 还有一种不太推荐的做法,这种做法不指定具体的编译器,而是开启交叉编译。采用这种方式只需要给编译器javac传入-source参数和-target参数。但是这种做法不推荐使用,尤其是当源码是用来一些高版本的语法时,贸然交叉编译成低版本的字节码,可能会导致运行失败。

      具体做法是配置compiler插件的source属性和target属性:
    <project>
      [...]
      <build>
        [...]
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
        </plugins>
        [...]
      </build>
      [...]
    </project>
    

    查看已解析依赖

    解析依赖的意思是确定所有的直接依赖和传递性依赖的最终版本,保证每个依赖都是唯一的。查看已解析依赖的命令是:

    mvn dependency:list
    

    查看项目依赖树

    可以清晰地看到当前项目的依赖树是什么样的

    mvn dependency:tree
    

    分析依赖

    分析依赖可以分析出哪些依赖是声明了但是没有使用到的,即多余声明;也可以分析出哪些依赖是直接使用到但是没有声明成直接依赖(而是通过依赖传递得到的)

    mvn dependency:analyze
    

    重点关注结果中的 Used undeclared dependenciesUnused declared dependencies 两部分内容。

    需要注意的是,对于这样一类依赖,我们不应该简单地直接删除其声明,而是应该仔细分析。由于dependency:analyze只会分析编译主代码和测试代码需要用到的依赖,一些执行测试和运行时需要的依赖它就发现不了。比如spring-core和spring-beans是运行Spring Framework项目必要的类库,因此不应该删除依赖声明。当然,有时候确实能通过该信息找到一些没用的依赖,但一定要小心测试。

  • 相关阅读:
    软件配置管理的作用?软件配置包括什么?
    火火恍恍惚惚
    什么是软件测试?软件测试的目的与原则
    软件生存周期及其模型是什么?
    试述软件的概念和特点?软件复用的含义?构件包括哪些?
    一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
    numpy的broadcast是怎么做的
    python到底是解释型语言还是需要编译的?
    python:删除类实例,仅仅只有动态属性会被删除,类属性不会被删除
    jupyter的kernel莫名其妙找不到,莫名其妙就中断
  • 原文地址:https://www.cnblogs.com/JMLiu/p/11664316.html
Copyright © 2011-2022 走看看