maven学习整理

之前在使用生产项目的过程中经常会遇到困惑:
1. mvn archetype:generate和mvn archetype:create之间有什么区别?
2. 类似archetype:generate的信息是什么?


第一个问题从网上搜了一下,原因是:mvn archetype:create在maven 3.0.5 之后将不再推荐使用;
第二个问题,我们需要首先从mvn的运行机制上说起:
Mvn 本身的构成分为几个部分:
周期->阶段->插件->目标
个人理解mvn的周期和阶段只是从顶层抽象了mvn在项目管理过程中的标准化流程,其实具体的执行还都是通过插件来实现的,并且在每个不同的插件中还包括了很多不同的目标(goal),每个goal回去实现一个具体的功能;例如我们在命令行中输入如下的信息:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

mvn在后台会去对应到一个插件来执行项目生成的功能:

[img]http://dl2.iteye.com/upload/attachment/0115/9404/576737d9-b5b1-3c18-b354-91d01ee55b68.png[/img]


从这里可以看到mvn archetype:generate这样一行命令实际上是对应了
artifactoryId:maven-archetype-plugin
version: 2.4
goal: generate
这样一个插件

-D其实是java自带参数用于传递启动参数,maven直接重用,用于给插件传递参数;

mvn的生命周期与阶段:
mvn的很多阶段都会默认绑定非常多的目标,我们使用mvn最为直接的方式就是在命令行输入某个阶段;例如,当我们输入mvn clean install 的时候,我们表面上是输入了“clean周期中的clean阶段”和“default周期中的install阶段”;由于每个阶段有会绑定到不同的“插件-目标”,因此当我们执行mvn clean install的时候,实际上发生了非常多的事情:


[img]http://dl2.iteye.com/upload/attachment/0115/9406/ad66e166-9c87-39ae-8226-00cfd4b0eeb8.png[/img]


这里需要特殊说明的是:
1. 虽然mvn的三个生命周期是相互独立的,但是每个生命周期内部的阶段是有顺序的。在default生命周期之中,install阶段之前还有很多其他阶段,例如process-resources,compile,test等等,并且部分阶段会有绑定的插件目标,因此我们可以看到在每个阶段多会执行很多的工作;
2. 另外,我们也可以通过在代码中通过配置指定目标执行的顺序;

[img]http://dl2.iteye.com/upload/attachment/0115/9408/820e850f-72b6-3359-ba2d-a808d30d271d.png[/img]


例如,这段jacoco插件的配置,就是要求这个插件在default周期的process-classes阶段去执行插件的prepare-agent目标方法。(针对这段配置,我们可以直接在命令行里输入mvn process-classes进行验证)

[b]distributeManagement的用法[/b]

当我们使用 mvn install 命令的时候其实是将jar包部署到本地环境。当我们使用 mvn deploy 会将jar包部署到远程仓库中。要实现这种功能我们只需要做如下几件事情:
1. 在本地的settings.xml文件中配置对用远程仓库的账号密码信息


<servers>
<server>
<id>XXX-Releases</id>
<username>hello</username>
<password>111</password>
</server>
</servers>


2. 在对应代码的主pom文件中增加distributeManagemnet



<repository>
<id>XXX-Releases</id>
<name>XXX-Releases Name</name>
<url>http://XXX-Releases.com</url>
</repository>



第二步中的id要与第一步的id保持一致。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值