首页 > 其他分享 >Maven

Maven

时间:2022-08-17 13:55:31浏览次数:92  
标签: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
From: https://www.cnblogs.com/daguniang/p/16594926.html

相关文章

  • Maven项目模块打包引入
    工作中我们会遇到这样的一种场景,就是写好的代码封包给别的部门使用或者项目使用,如果我们此时按照正常的打包流程的话,对方是可以使用maven引入包的,但是包内的类缺无法引入使......
  • idea右侧的maven框消失
    首先打开项目的pom文件;鼠标右键选择AddasMavenProject如下图所示,点完这两部,maven就会顺利的出来了,如下下图所示......
  • 创建Maven项目部署tomcat没有Artifacts文件
    手动创建添加设置里 选择该项 应用即可,返回tomcat添加部署就有了tomcat部署 ......
  • Maven
    Maven目录Mavenwhy项目架构管理工具下载安装Maven配置环境变量设置-高级系统设置-环境变量阿里云镜像本地仓库why1、在javaweb开发中,需要使用大量jar包(手动导入)2、如何......
  • STS创建一个Maven项目
    一、创建一个Maven项目【File】-》【New】-》【Other】-》【MavenProject】     创建成功界面 ......
  • Maven中的scope总结
    参考博客:(10条消息)Maven中的scope总结_野生开发者的博客-CSDN博客_mavenscopeMaven中的scope主要有以下6种,接下来分别介绍下这几种scope:1、compile不声明scope元素的......
  • Mac安装配置maven环境变量
    Mac安装配置maven环境变量首先要确保Java环境变量已经配置好1.下载maven包:下载链接:......
  • IDEA修改项目为Maven项目
    一开始的时候创建错了,后面想改成Maven项目在你的项目上右键-->选择AddFrameworkSupport拉到最底下,在Maven那里勾上就行了......
  • Eclipse中Maven打包配置
    打包命令cleaninstall-Dmaven.test.skip=true-Dmaven.javadoc.skip=true-Dfile.encoding=UTF-8-Pdev[mvn]cleanpackage或者cleaninstall普通Maven项目Jar类......
  • maven
    目录安装win版环境变量验证命令安装win版注意xml文件配置阿里国内镜像。官网地址:https://maven.apache.org/download.cgi下载.zip文件环境变量和jdk一样验证命令......