maven项目打包构建日志分析

maven项目打包构建的日志分析

本文目的

  上一篇,maven项目的依赖调解机制
  当我们在执行mvn clean install命令时,或者idea执行clean install时,我们会看到控制台打印一堆的日志,最后在项目的target文件夹下出现打好的jar包。
   那打印的那一堆日志到底做了什么事情,以前没有具体看过,这里总结一下这个过程。

正文

  其实应该先引出Maven的另外两个核心概念生命周期插件。但是我觉得还是反过来说,先看下我们经常用的命令clean install,在执行的时候干了什么。

1. 构建依据

  clean install后,项目会执行很多东西,具体执行的内容,都会基于插件的实现。所以在日志里,你会看到好多的带有XXX-plugin的东西,而插件的执行顺序、范围都是基于生命周期的定义来做的。
   那这些插件是哪里来的呢?基本就是三个地方

  1. 当前项目pom.xml中对应的<plugins>标签中定义的。
  2. 父项目的pom.xml中对应的<plugins>标签中定义,当前项目继承的。
  3. pom,即maven安装包对应的/lib/maven-model-builder-xxx.jar/org/apache/maven/pom-4.0.0.xml中。

2. 具体日志

   在项目进行构建时,这些插件就会按照生命周期的定义进行执行,下边是我将自己项目打包的日志贴了出来,参考下:

 /**1. 扫描项目 **/
[INFO] Scanning for projects...
[INFO]  
 /**2. 开始构建项目 **/
[INFO] ------------------------------------------------------------------------
[INFO] Building znxd-base-master 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
 /**3. 使用maven-clean-plugin插件,先清除maven项目的target文件内容**/
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ znxd-base-master ---
[INFO] Deleting E:\znworkspace\znxd-base-master\target
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ znxd-base-master ---
 /**4. 使用maven-resources-plugin插件,拷贝src/main/resources中文件到target/classes下**/
[INFO] Using 'UTF-8' encoding to copy filtered resources.
 /**5. 正在拷贝src/main/resources下的21个文件**/
[INFO] Copying 21 resources
[INFO] 
 /**6. 使用maven-compiler-plugin插件,编译src/main/java下文件**/
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ znxd-base-master ---
[INFO] Changes detected - recompiling the module!
 /**7. 正在编译src/main/java下的102个文件,将编译后文件拷贝到/target/classes下**/
[INFO] Compiling 102 source files to E:\znworkspace\znxd-base-master\target\classes
 /**8. 后边是编译过程中的一些警告**/
[INFO] /E:/znworkspace/znxd-base-master/src/main/java/com/agri/utils/Okhttp3Utils.java: E:\znworkspace\znxd-base-master\src\main\java\com\agri\utils\Okhttp3Utils.java使用或覆盖了已过时的 API。
[INFO] /E:/znworkspace/znxd-base-master/src/main/java/com/agri/utils/Okhttp3Utils.java: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
[INFO] /E:/znworkspace/znxd-base-master/src/main/java/com/agri/framework/web/controller/user/SysUserController.java: 某些输入文件使用了未经检查或不安全的操作。
[INFO] /E:/znworkspace/znxd-base-master/src/main/java/com/agri/framework/web/controller/user/SysUserController.java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
[INFO] 
 /**9. 再使用maven-resources-plugin插件拷贝src/test/resources中的文件到target/test-classes下**/
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ znxd-base-master ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
 /**10. 因为我项目中没有src/test/resources文件夹,所以提示跳过**/
[INFO] skip non existing resourceDirectory E:\znworkspace\znxd-base-master\src\test\resources
[INFO] 
 /**11. 再使用maven-compiler-plugin插件,编译src/test/java下文件**/
[INFO] --- maven-compiler-plugin:3.3:testCompile (default-testCompile) @ znxd-base-master ---
[INFO] No sources to compile
[INFO] 
 /**12. 使用maven-surefire-plugin插件,运行src/test/java下,符合规则的单元测试类(下边 5.1 单元测试匹配规则)**/
[INFO] --- maven-surefire-plugin:2.20.1:test (default-test) @ znxd-base-master ---
[INFO] No tests to run.
[INFO] 
 /**13. 使用maven-jar-plugin插件,打包项目成jar**/
[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ znxd-base-master ---
[INFO] Building jar: E:\znworkspace\znxd-base-master\target\znxd-base-master.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.2.5.RELEASE:repackage (repackage) @ znxd-base-master ---
[INFO] Replacing main artifact with repackaged archive
[INFO]
 /**14. 使用maven-install-plugin插件,进行安装,一般install插件是安装到本地仓库及target文件夹中,如果要想安装到私服上,可以看下边链接(后边有提到)**/
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ znxd-base-master ---
/**15.安装项目到自己的本地仓库中**/
    [INFO] Installing E:\znworkspace\znxd-base-master\target\znxd-base-master.jar to d:\mavenJarOnline\com\znxd\znxd-base-master\1.0-SNAPSHOT\znxd-base-master-1.0-SNAPSHOT.jar
[INFO] Installing E:\znworkspace\znxd-base-master\pom.xml to d:\mavenJarOnline\com\znxd\znxd-base-master\1.0-SNAPSHOT\znxd-base-master-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 42.290 s
[INFO] Finished at: 2021-07-16T02:29:24-03:00
[INFO] Final Memory: 62M/703M
[INFO] ------------------------------------------------------------------------

3. 涉及主要插件

   整个过程涉及到的主要插件作用如下:

  1. maven-resources-plugin:将src/main/resourcessrc/test/resources目录下的文件拷贝到target下。
  2. maven-compiler-plugin : 将src/main/javasrc/test/java目录下的文件拷贝到target下。
  3. maven-surefire-plugin: 运行src/test/java下的单元测试。当在这个目录下的类命名,如果满足**/Test**.java**/*Test.java**/*TestCase.java规则,在项目构建的时候,就会执行这些类,所以,一定在项目构建时,注意这些测试类是否能够正常执行,否则会报错
  4. maven-install-plugin: 将jar包安装到本地仓库中。

猜你喜欢

转载自blog.csdn.net/wohaqiyi/article/details/119989298