开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术:Maven插件】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/80/detail/15905
Maven插件
内容介绍:
一、插件运行顺序
二、plugi和生命周期绑定
三、工程下载
四、运行打包
Maven是靠插件工作,在生命周期中间的阶段,只是定义了一个顺序,每个阶段是需要跟插件绑定到一起,再来完成相应的任务。Maven 中间有提供了很多的插件,每个插件也可以完成多个功能,所以把这个插件的每一个功能称之为插件的目标叫
做 plugin,最常用的插件是 springboot。
一、插件运行功能
Maven 的 spring boot 里头就包含了多个功能,也就多个目标,
最常用的目标是 spring boo t的 run,run 主要是 Spring boot 的应用程序,会在maven的标准的目录的结构上找到target下的jar文件,然后运行起来。
1.repacekage
spring boot的repacekage进行一个重打包,会新重新打jar包或者war包,把它变成一个可执行的包。
2.help
spring boot的help,是用来显示parking的一些帮助信息。
3.start
spring boot start 和 spring boot run 功能不同,start 是用来启动 spring boot的应用程序,但是它不会阻塞,在用 run 时,运行一个 jar 包,但目标被阻塞停止,可能执行完后退出来,才会继续运行,start 允许在运行一个应用程序以后再去运行
其他的应用程序。
4.stop
spring boot 的 stop,只用来停止用 start 运行的一个 springboot 的应用程序。这是常用的 Marvin 中 spring boo t的 plugin,plugin 一般用的时候并没有把它跟生命周期中间的阶段绑定起来,只是 在Marvin 的 plug 中间把它引进来,所以比如在idea 中间,在 plug 中间就能看到 plugin,可以直接去点它相应的目标,去完成相
应的功能。
二、plugin和生命周期绑定
在很多时候实验会把 plugin 和生命周期中的阶段绑定起来,绑定有两种方式,一种是内置绑定,一种是定义绑定,内置绑定就是 Marvin 中间已经绑定好,比如在clean 生命周期中间的 clean 阶段,它就被绑定到默认绑定到 Marvin 的 clean 的plugin 的 clean 目标里。
1. Default生命周期
Default比较复杂。因为它也会根据package的类型(就是打包,jar包,war包,还是
pom),决定这些阶段是怎样绑定的。
(1).jar包或war包的打包
process -resources 阶段绑定到 maven 的 resources 阶段,Plug in 的 resource 的功能上。
compile 阶段绑定的是 maven -compile 的 plug in:compile的目标。
Process -test -resources阶段绑定的是maven的resources- plug in的taste
resources。
Test-compilel这个阶段绑定的是maven-compile-plugin的taste Compile阶段。
test绑定的是maven的surefire-plugin的test阶段,
打包,如果是jar包的话,绑定的是maven-install-plugin的jar,如果是war包的话就是maven-install-plugin的war。
install绑定的是maven-install-plugin的install的目标。
deploy绑定的是maven-deploy-plugin:deploy的目标。
这是打jar包或者war包的时候,Default生命周期的阶段的绑定的情况。
(2).pom打包
如果package一个pom,这种情况其实是用在附子项目管理的时候,就是在附项目中间,是不需要去打包的,只需要去定义在子项目中间所共享的一些信息。这时package的值是pom,
Maven去写pom文件的时候,它除了install和deploy以外所有的阶段都没有绑起来,因为在负的pom文件定义的结构中间既不需要编译,也不需要做任何其他的,它只是绑定了install和deploy,后绑定到Marvin的install-plugin 的install和Marvin的deploy- plugin的deploy
2.site生命周期
site阶段绑定的是Marvin- sight -plugin的site目标,
Site deploy,则绑定到plugin的deploy的目标上面,这是Marvin的内置的绑定。
所以如果中间不做任何定义的话,Maven的这些所有的阶段就是这样绑定到对应的插件上,有时候需要在Marvin的不同阶段去做一些自己定义的一个动作,定义的一个功能,那就需要在proe中间去自定义这个阶段和插件的绑定关系。
三、工程下载
在idea中间,怎样把一个工程从get helpp上把它下载下来。
(1)、选择idea的VCS菜单下的get from watching control,
这样就可以从get服务器上把工程下载下来。Version control选择git的版本,然后在url上面输入JAVAEEPLATFORM这个工程的目录,然后选择clone,它就会从服务
器上把这个JAVA的实例代码全部下载下来。
在下载下来的文件夹里有 maven 的标准的目录结构,这时idea并不会把它认为是一个项目的工程,还需要在 idea 中间把它 input 成为一个 idea 的工程,在maven的根目录的pom文件上,点右键,
选择 ads maven project 样式的 idea 的 ide 去读取 com文件里的相关的定义,然后把它变成一个在ide里的工程,当变成ide里的工程后,相应的目录的颜色会发生改变,在 ide 中间,它会认出哪些是生产代码的的目录,哪些是资源目录,哪些是
测试代码的目录。
同时在右边的type里头,出现 maven 的 type,点开 maven 的 type,能看到已经识别出来的工程项目 autowdemo,这里有三个 fold,第一个是 life cycle,就是生命周期阶段,第二个是这个 plugins,也就是在pom经中间定义的 plugin加上maver。第三个是 dependencies,这是在pom里面定义的所有的 dependencies的jar包.
主要使用的是 life cycle 和 plugins。首先看下 life cycle,在 ide 中间的 life cycle中间,并没有把所有的阶段都放到 life cycle 中间。主要是在 clean 生命周期中间的 clean 阶段,在 site 生命周期中间的 site 阶段,以及在 default 生命周期中间的validate、 compile、 test、 package、 verify、install、 deploy几个阶段,因为在使用maven的时候主要的阶段,不太会使用Generate source,Process resource这些阶段,常使用的阶段在idea的界面中间,都把它直接列了出来。
四、运行打包
打包的package的阶段是在default里的,如果说在界面上可以看到运行package的阶段的话,它前面的validate compare和test这些阶段都会跟着运行,运行完后,
可以看到plugin的目标都在一一的执行。
1.运行绑定
(1)、首先是 resources- plugin 的目标,绑定的是在default的目标。
绑定的是在default生命周期中间的process resource的一个阶段。
(2)、后面lemon的compare plaguin的compel目标,它绑定的是的default生命周期的compare阶段。
(3)、第三个是Resource的test resource阶段,绑定的是default生命周期的test resources的这个阶段。
(4)、第四个是test compile,绑定的是default生命周期中间的test compile这个阶段,然后是test是绑定在default test这个阶段。
所以当运行party的时候,它其实是为运行这些前面的这些阶段所绑定的plug in的目标
2. 执行测试的结果
jar和repection,这两个目标都是绑定在package的阶段里的。
目录生成了一个红色的touch的目录,在touch的目录中间,可以看到编译出来的class文件,打出来的jar包,这就是在package阶段最后执行的结果
执行一下 clean 阶段,Clean 阶段是在 clean生命周期的,主要目的是为了清掉所有构建出来的文件,它运行的是 clean flag in 的 clean,是在 default 的 clean 阶段的绑定的。Photo 的 clean 阶段的绑定的插件目标,运行完插件目标以后,可以
看到插件的的目录整个就被删掉了.
所以通过idea的右边的maven的标签可以很方便的使用 idea。由于工程师使用
maven 来进行工程管理,所以一般不会使用 idea 里的自身的功能去进行程序的运行和打包,而是借助于 Maven 来实现,如果要去修改这个配置的话,也是改的这
个 mama 里头的配置,不会去改 idea 里头的这个配置。
所以这样的话,就把 idea 退化,成为我们一个写代码的工具,整个工程的打包编
译的这个过程,交给了 maven 来做。