ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Maven

2022-08-17 14:00:09  阅读:148  来源: 互联网

标签:INFO maven 插件 生命周期 Maven clean txt


Maven

Maven 的理解

  • maven 定义了一系列运行的流程,也就生命周期,但是这些生命周期是抽象的

生命周期是抽象的理解

  • maven的生命周期是抽象的,没有定义具体的逻辑,所有的逻辑都通过maven的插件来完成
  • 假如将生命周期类比为你上班的一天
    • 例如这一天中有一个流程是从家到公司(对应着生命周期中的一个周期),那么怎么去公司就是不确定的,你可以走路去公司,也可以坐地铁去公司,在maven中就将这个怎么去公司这件事交给了maven的插件,由他来具体定义具体的逻辑
  • 所以总结的说就是,maven 由一连串的生命周期构成,每个生命周期干什么由maven插件来完成,记住是每一个生命周期

maven 插件

  • 每一个生命周期都由插件来完成??
  • 有的小伙伴就有疑问了,maven插件我知道,就是pom中一般放在最后的,由标签build,plugin包裹的,你说的所有的生命周期,我记得我就导入过几个插件啊,哪些clean这种生命周期,我没导入过插件啊???
  • 这个其实是maven自己在一些生命周期上默认绑定了一些插件,因为这些插件是大家一般都会这么用的,要是我下载了你maven这个东西,连clean这么基础的动作,都要我,引入这个那个的插件岂不烦死了
  • 下面是我单独跑clean,看看是不是插件在起作用
C:\Users\someo\Desktop\workTestJava\maevn-build-test>mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< org.example:maevn-build-test >--------------------
[INFO] Building teetetete 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maevn-build-test ---
[INFO] Deleting C:\Users\someo\Desktop\workTestJava\maevn-build-test\target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.499 s
[INFO] Finished at: 2021-07-15T10:29:43+08:00
[INFO] ------------------------------------------------------------------------

  • 可以看到maven-clean-plugins:2.5 在起作用

maven 所有的生命周期

pom 中的resource到底怎么用的???

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.txt</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
  • directory 作用的目录

  • include 要输出的文件

  • filtering 对文件中的替换符是否要替换

  • 以上配置解释就是我只将src/main/resources目录下以及子文件夹下的所有的后缀是txt的文件输出到target中,同时对文件中的替换文字进行替换

  • 还有一种配置

            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.txt</exclude>
                </excludes>
                <filtering>false</filtering>
            </resource>
  • 以上配置解释就是我将src/main/resources目录下以及子文件夹下的所有的后缀不是txt的文件输出到target中,同时不对文件中的替换文字进行替换
  • 二者配合起来才是最终形态
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.txt</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.txt</exclude>
                </excludes>
                <filtering>false</filtering>
            </resource>
        </resources>
  • 我将src/main/resources下所有的文件都加入到target中,但是只对txt为后缀的文件进行替换文字
  • 分步骤来
    • 第一个配置会只输出txt的文件,同时处理替换文字
    • 第二个配置会输出除了txt的文件,但不处理文字
    • 二个一结合就是输出所有的文件,只处理txt后缀的替换文字

maven 的生命周期 和 maven 插件的目标 的关系

  • 以 spring-boot-maven-plugin 插件为例子,此插件用于将jar,war包打成可以执行的jar,war包
  • 之前我们说了maven生命周期的所有都是由插件来执行的,那我们怎么将生命周期和插件绑定呢
            <plugin>
				...
				...
                <executions>
                    <execution>
                        <id>随意名字</id>
                        <phase>package</phase>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
  • 一般导入的插件都是由这个结构来进行绑定的
  • phase 就是maven对应的生命周期
  • goal 就是 maven 插件对应的目标
  • maven 插件的goal是什么???
    • 当我们制作一个插件的时候,肯定是希望插件有多个功能,当插件后面跟的命令不同,执行相应的目标
    • 就比如最常见的clean插件也有二个目标,每个目标对应不同的功能
      • clean:clean
      • clean:help
  • 所以一个生命周期绑定一个插件的一个功能才是一一对应了

为什么有的插件啥都没写,只是引入了就知道绑定在了哪个生命周期上

  • 其实就像maven的clean类似,他们这个插件被制作出来,默认就是有绑定的生命周期,不需要刻意指定
  • 可以通过命令来查看
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:3.2.0 -Ddetail

>>>>


source:jar-no-fork
  Description: This goal bundles all the sources into a jar archive. This
    goal functions the same as the jar goal but does not fork the build and is
    suitable for attaching to the build lifecycle.
  Implementation: org.apache.maven.plugins.source.SourceJarNoForkMojo
  Language: java
  Bound to phase: package
 
  Available parameters:
 
    archive
      The archive configuration to use. See Maven Archiver Reference.
      Note: Since 3.0.0 the resulting archives contain a maven descriptor. If
      you need to suppress the generation of the maven descriptor you can
      simply achieve this by using the archiver configuration..
 
    attach (Default: true)
      User property: maven.source.attach
    ...
    ...
    ...
    ...
  • Bound to phase: package 表示默认绑定到了package生命周期上

标签:INFO,maven,插件,生命周期,Maven,clean,txt
来源: https://www.cnblogs.com/daguniang/p/16594926.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有