maven 关联源码插件_繁琐的任务简单化,Maven的插件机制

dd68a38cf93ea78fdec15ce816f1f9a7.png

Maven的生命周期与Maven插件是项目绑定的,生命周期可以理解为项目构建步骤的集合,它定义了各个构建环节的执行顺序,有了这个顺序,Maven 就可以自动化的执行构建命令。Maven 的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件来完成的。有三套相互独立的生命周期,各个构建环节执行顺序不能打乱,必须按照既定的正确顺序来执行。

  1. Clean Lifecycle:在进行真正的构建之前进行一些清理工作
  2. Default Lifecycle:构建的核心部分,编译、测试、打包、安装、部署等等。
  3. Site Lifecycle:生成项目报告,站点,发布站点。

这三个都是相互独立的。你可以仅仅调用 clean 来清理工作目录,仅仅调用 site 来生成站点。当然,也可以直接运行 mvn claen install site 运行所有这三套生命周期。Maven默认地将一些默认插件的目标与Maven的生命周期维系在了一起,比如default的compile这个阶段就是和maven-compiler-plugin这个插件的compile目标维系着不可分割的关系。
为了不让用户不用任何配置就能进行一般程度的项目构建,Maven默认给自己生命周期的核心阶段绑定了自己的插件。clean如下:

4a60d1b82fced80d010fe0bccebb7f92.png

site如下:

3c7c5c41d00f46c17cec86f43e3fb755.png

最麻烦的就是最核心的default:

39f2fd72e66a335b10af0223d7463e6b.png


通过 Maven 的生命周期我们可以了解到,不同的生命周期绑定不同的插件;同时我们知道,下载下来的maven核心的东西不过3-4M,它主要就是通过插件来完成这些工作的,一旦碰到没有的插件,它会跑到相应的地方下载,然后来完成整个过程。那么在我们的项目中如何使用插件呢?
打开http://maven.apache.org/plugins/index.html网址,我们可以看到apache下面的很多插件,apache下面的插件是比较正规的,它里面的信息非常详细。下面我们来看看里面有个source的插件的用法。
Source插件是对源代码进行打包的一个插件,默认情况下,它会将生成的源代码放在工程目录的target下面。
Source插件具有五个目标:
source:aggregateaggregrates sources for all modules in an aggregator project. source:jaris used to bundle the main sources of the project into a jar archive. source:test-jaron the other hand, is used to bundle the test sources of the project into a jar archive. source:jar-no-forkis similar to jar but does not fork the build lifecycle. source:test-jar-no-forkis similar to test-jar but does not fork the build lifecycle.
在我们的工程pom.xml中,在后面引入下面这段配置:

<build> <plugins><plugin> 
<groupId>
org.apache.maven.plugins
</groupId><artifactId>
maven-source-plugin
</artifactId> 
<version>2.1.2</version> 
</plugin></plugins> </build>

上面这段配置就是对源码进行打包的插件,我们运行source:jar-no-fork,那么在项目的目录底下的target会生成一个类似于user-core-0.0.1-SNAPSHOT-sources.jar这样的文件,即项目的源文件。那么如何将这个插件与特定的生命周期绑定呢?我们来看下面这段配置:

<build> <plugins> <plugin><groupId>org.apache.maven.plugins
</groupId><artifactId>maven-source-plugin</artifactId> 
<version>2.1.2</version> 
<executions> <execution> 
<phase>package</phase><goals> <goal>jar-no-fork</goal></goals> </execution> </executions></plugin> </plugins> 
</build>

通过这段配置,大家可以用mvn package将项目打包的同时会将源代码进行打包。图示说明:

9785e50acdabeb8c7e50884020e0fbc4.png


Apache Maven里面还有很多有用的插件,大家可以自己去试一下,里面说明很详细,大家只要按着官方文档进行配置,一般情况下是没问题的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双稳态继电器工作原理图_固态继电器只有单一的作用吗?带你了解不一样的固态继电器...

固态继电器简写SSR(Solid State Relay)&#xff0c;是一种全部又分离的固态电子元件(如光耦合器、晶体管、可控硅、电阻、电容、集成电路等)组成的无触点电阻开关&#xff0c;这里请注意&#xff0c;相比较与继电器、接触器&#xff0c;固态继电器是无触点的耦合开关。因此&…

c++switch实现猜拳_C语言实现人机猜拳游戏,非常适合C++小白练习的项目!

学习迷茫遇到问题了吗&#xff1f;现在关注微信公众号&#xff1a;C程序编程 免费获取进阶指导和学习资料&#xff01;本文福利在文末&#xff01;这是一个简单的猜拳游戏&#xff08;剪子包子锤&#xff09;&#xff0c;让你与电脑对决。你出的拳头由你自己决定&#xff0c;电…

bootstraptable获得所有行_2020广汽本田安全中国行·首届道路安全创新大赛成功举办...

两辆汽车分别搭载了代表着婴儿的红心&#xff0c;当两车相撞&#xff0c;被安全座椅包裹的红心安然无恙&#xff0c;而另一颗没有安全措施的红心直接裂开。画面配文"救救孩子"&#xff0c;让人格外揪心。这是来自2020年广汽本田安全中国行首届道路安全创新大赛公益广…

en55032最新标准下载_大型设备塔吊安装维保、安全检查及案例,94页PPT下载!

提示&#xff1a;点击↑上方"建筑安全技术"关注加入领取&#xff1a; 一级建造师课件&#xff1b; 二级建造师课件&#xff1b;注册安全工程师课件&#xff1b;目录&#xff1a;1、 塔吊的安装流程及使用的常规检查2、 塔吊维修保养3、 使用过程中存在的问题4、 …

六年级下册百分数计算题_小学六年级数学期末考,题量较大,出题全面、灵活...

昨天&#xff0c;我们进行了期末考试&#xff0c;因为是八月中旬开学的&#xff0c;所以&#xff0c;期末考试&#xff0c;也进行地比较早。六年级数学上册人教版&#xff0c;此次期末测试&#xff0c;题量是非常大的&#xff0c;大题共有六道&#xff0c;题型呢&#xff0c;主…

媒体转码切片_移动、咪咕携手华为实现5G网络切片应用大型直播

在西班牙巴塞罗那移动通信大会上&#xff0c;华为公司展台用电子屏展示5G技术。新华社资料图近日&#xff0c;第十二届音乐盛典咪咕汇在上海梅赛德斯奔驰文化中心开幕。周杰伦、张惠妹、G.E.M.邓紫棋等华语乐坛著名歌手悉数亮相。在上海移动、咪咕、华为的合作之下&#xff0c;…

macos可以升级到指定版本吗_iOS14如期而至!重大更新的全新版本,值得升级吗?答案在这...

昨天&#xff0c;苹果相继发布了iOS 14&#xff0c;iPad OS 14&#xff0c;watchOS 7&#xff0c;tvOS14和macOS 10.16。顺便说一下&#xff0c;我们将为您提供最新的iOS14测试体验&#xff0c;让您知道它是否值得升级&#xff0c;这让iPhone6s用户留下了深刻的印象。IOS 14是自…

筒灯智能驱动芯片作用_魅族携8款智能照明新品进军智能家居,剑指行业前三...

原标题&#xff1a;魅族携8款智能照明新品进军智能家居&#xff0c;剑指行业前三不久前&#xff0c;魅族正式对外宣布进军智能家居领域&#xff0c;从开启了手机智能家居智能穿戴的全新“一体两翼”战略&#xff0c;并对外公布全新高端智能家居品牌Lipro&#xff0c;目标在三年…

名图空间实测_骗子!20来万的大众SUV号称7.8秒破百,实测后我服了!

很多对汽车知识了解不深的消费者&#xff0c;大多是从别人口中去了解车型&#xff0c;而网络发达的现在充斥这大量的键盘侠&#xff0c;这些键盘侠很多都并没有接触过实车&#xff0c;仅仅是依靠网上的一些数据、等级、定位等等话术来显示自己的知识。 可是数字就不会骗人吗&am…

前端未死,顺势而生

随着人工智能和低代码的崛起&#xff0c;“前端已死”的声音逐渐兴起。前端已死&#xff1f;尊嘟假嘟&#xff1f;快来发表你的看法吧&#xff01; 一、“前端已死”因何而来&#xff1f; 在开始讨论之前&#xff0c;首先要明确什么是“前端”。 所谓前端&#xff0c;主要涉及…

化工原理少学时答案解析_初中科学电磁铁的构造和原理每日一练含答案解析

1.某溶液由NaOH、HCl、H2SO4和CuCl2中一种或几种组成&#xff0c;向该溶液滴加Ba(OH)2溶液&#xff0c;产生沉淀的质量与加入Ba(OH)2溶液体积的关系如图所示。请你从图中获得的信息来分析&#xff1a;(1)该溶液中不可能存在的物质是(写化学式)&#xff1b;(2)肯定存在的物质是(…

vue项目职责_进大厂兼职的机会来了!腾讯微校项目招人了!

在经历了双十二等各种剁手准备冬至、圣诞节的各种礼物之后你是否也零钱“归零”&#xff0c;余额“无余”许多同学会选择做兼职这样既能利用空余时间挣一些零花钱还能积累一些工作经验而现在一个进大厂兼职的机会来了腾讯微校项目小程序招人啦&#xff01;快来看看吧&#xff0…

页面无法滚动_【前端词典】滚动穿透问题的解决方案

点击上方“前端真好玩”&#xff0c;喜欢他就关注他听说&#xff0c;看恺哥的文章会上瘾背景产品有三宝&#xff0c;弹窗&#xff0c;浮层加引导&#xff1b;设计有三宝&#xff0c;透明&#xff0c;阴影加圆角&#xff1b;运营有三宝&#xff0c;短信&#xff0c;推送加红包&a…

虚拟机连接网络_Parallels Desktop 16教程PD16虚拟机共享网络和桥接网络设置方法

许多用户在Mac上安装Parallels Desktop 16之后&#xff0c;想要设置Mac与虚拟机共享网络&#xff0c;那么共享网络和桥接网络设置有什么不同&#xff1f;该怎样设置&#xff1f;本篇就为大家分享PD16虚拟机共享网络和桥接网络设置方法。Parallels Desktop 16 for mac(pd虚拟机)…

如何批量转化成jpg格式_heic图片格式快速转换jpg,批量转换方法

heic图片是苹果手机独有的图片格式&#xff0c;电脑上或者其他设备是无法打开&#xff0c;需要将heic图片进行转换成jpg/bmp/png等电脑或其他设备可以的打开的格式&#xff0c;那今天就学习一下heic文件怎么转换的&#xff0c;将苹果的手机中的照片存到电脑上的某个文件夹&…

查询去重_【Freya的MySQL课堂】DQL基础查询

MYSQL基础查询各位小伙伴们晚上好&#xff0c;今天是10月22号。我是你们的Freya。今天我们开始学习MySQL中的DQL语言。Do Not Stop Learning我的小课堂我爱学习&#xff0c;学习使我快乐今天你学习了吗&#xff1f;一、语法select 查询列表from 表名;二、特点1、查询列表可以是…

二阶偏微分方程组 龙格库塔法_有限单元法(Finite Element Method)实现声波方程模拟(Part 2)...

2.1 前言承接上一篇文章&#xff0c;前面我们已经介绍了一维声波方程有限元求解&#xff1a;蓝不是蓝&#xff1a;有限单元法(Finite Element Method)实现声波方程模拟&#xff08;Part 1&#xff09;​zhuanlan.zhihu.com这一部分将一维问题提升到二维问题。不知道大家有没有发…

python图片转文字_【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码...

在日常办公或者学习中&#xff0c;往往存在这样一个工作场景&#xff0c;比如&#xff0c;“老王&#xff0c;我这里有一张图片&#xff0c;你把里面的文字信息给我整理出来”&#xff0c;都2021年了&#xff0c;你真的还在手敲图片文字信息么&#xff1f;那么还不赶紧收藏这篇…

qpsk 锁相环_本科毕业设计课题—QPSK相干解调的MATLAB仿真(4)

继续看参考资料&#xff01;现在常用的数字调制方式有二相移相键控(BPSK)、正交移相键控(QPSK)、偏移四项移相键控(OQPSK)、最小移频键控(MSK)等。它们具有相同的功率效率。BPSK 频谱利用率差&#xff0c;抗非线性能力差&#xff0c;实现简单&#xff1b;QPSK频谱利用率好&…

postgresql是如何求年龄的_Postgresql 通过出生日期获取年龄的操作

三个基础的时间表示函数 current_date/current_time/now()select current_date ;返回当前日期以 年-月-日(yyyy-mm-dd)的形式&#xff1a;2019-01-10select current_time;返回当日时间以 时:分:秒时区(hh:mm:ss )的形式&#xff1a;17:49:11.58530808select now();返回当前时间…