Maven基础

 Maven基础

构建maven项目

1.1命令:

mvn archetype:create -Dkey = value

1.2语法:

Ø Mvnmaven2的命令。

Ø Archetype:create称为一个maven目标,它的目的是通过archetype快速创建一个项目。

这里具体见“2maven插件和目标”章节

Ø -Dkey = value 负责传入一些具体配置参数。如传入groupIdartifactId等。

1.3实例:

mvn archetype:create -DgroupId = com.ying.test -DartifactId = bean -DpackageId = helloworld

截图:


1.1  archetype:create命令实例

生成工程后,我们可以进行实际的编码,完成具体的业务需求后,我们可以执行install命令。Install的过程会把我们的本地代码编译、执行测试用例,然后在工程目录下生成一个target目录,把我们的工程达成一个包,如图:


1.3 install之后的target目录

之后会发布到本地repository中去,如图:


1.4 install之后的repository目录

install过程结束后,我们就可以对编译好的包进行使用了。如


图1.5 install的包执行java命令

1.4 注意:

1. 冒号和等号的左右不可有空格,否则构建不成功,报语法错误。

2. groupId对应的是install之后本地repository中的目录结构;而artifactId对应的项目名称;packageName对应的是工程的目录结构。如下:


图1.2  archetype:create后的工程目录

2 maven插件和目标

Maven插件相当于一个功能集合,而目标就是这个功能集合中的一个子功能。如help:describe.其实help中有很多功能,如下:


图2.1 help目标展示

我们可以通过上述命令查看help插件的信息。可以看出"help"指的是maven-help-plugin,它有9goal,而“describe”只是其中的一个goal(目标)而已。限于篇幅我列出部分goal,如下:

Help: 

----describe

----evaluate

----expressions

----help

----system

插件和目标的关系一目了然。

因此,当提到一个插件目标的时候,我们常常用速记符号:pluginId :goalId.如上文我们用到的archetype :create 。 这里的“archetype”是一个插件名称,maven-archetype-mojo

“create”就是这个插件的一个命令,即其中的一个goal,通过help插件我们可以查看一下它的具体信息


图2.2 archetype插件信息

3 Maven生命周期

3.1执行过程

上述的install指令,实际上执行了如下几个步骤:

拷贝源代码——》编译源代码(在target目录下生成对应的class文件)——》拷贝测试代码——》编译测试代码(在target目录下生成对应的class文件)——》捕捉测试结果——》打包——》发布到repository

对应的插件和目标如下:
   mvn resources:resources ---- 源码拷贝(实验过程中并没有发现有拷贝情况发生)

mvn compiler:compile ----  源码编译

mvn resources:testResources ----  测试代码拷贝(实验过程中并没有发现拷贝)

mvn compiler:testCompile ----  测试代码编译

mvn surefire:test ----  测试结果捕捉

mvn jar:jar  ----  打包

mvn install:install ---- 发布到repository

3.2坐标

Install之后打包的repository中,这个过程是依靠maven中的坐标来找到的对应目录。Maven的坐标包括:groupId,artifactId,version,packaging.这些组合构成了项目的坐标。

实例:

上边的例子中,我们的pom.xml文件中的相关坐标代码如下:

  <groupId>com.ying.test</groupId>

  <artifactId>bean</artifactId>

  <version>1.0-SNAPSHOT</version>

  <packaging>jar</packaging>

Install之后的jar包全路径如下:

"c:\Users\hh\.m2\repository\com\ying\test\bean\1.0-SNAPSHOT\bean-1.0-SNAPSHOT.jar"

其他

4.1 profile

Profile的最大好处体现在环境的可移植性上,可以让不同的人员根据特殊的环境自定义不同的构建。如果两个profile中有相同属性的声明,后边的profile会覆盖前边的内容。比如example例子中的profile iddevelopment,如果我自己声明一个idtestprofile,内容格式跟development中的一致,只是value改变,当我们执行install指令时,maven会用idtestprofile中对应的属性值。

4.2 依赖关系查找

在有需要查看maven的每个jar包是定义在哪个pom文件,由哪个包依赖的,或者要查找依赖冲突问题,可按如下的方法(知道的可以忽略):

 

mvn clean install -Dmaven.test.skip=true -Pdevelopment

mvn dependency:tree > log.log

 

log.log文件中查找

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值