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 所有的生命周期
- Maven使用之生命周期和插件(五)_奔跑的蜗牛-CSDN博客
- 参考以上 blog
pom 中的resource到底怎么用的???
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.txt</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
-
directory 作用的目录
-
filtering 对文件中的替换符是否要替换
-
以上配置解释就是我只将src/main/resources目录下以及子文件夹下的所有的后缀是txt的文件输出到target中,同时对文件中的替换文字进行替换
-
还有一种配置
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.txt</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<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>
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是什么???
- 所以一个生命周期绑定一个插件的一个功能才是一一对应了
为什么有的插件啥都没写,只是引入了就知道绑定在了哪个生命周期上
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生命周期上
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。