Maven的介绍及使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Maven的介绍及使⽤
⼀、Maven简介
Maven 是⼀个项⽬管理⼯具,可以对 Java 项⽬进⾏构建、依赖管理,是⼀个⾃动化构建⼯具。
⾃动化构建⼯具:将原材料(java、js、css、html....)->产品(可发布项⽬)
编译-打包-部署-测试 -> ⾃动构建
Maven的作⽤:
1、管理jar包
1. 增加第三⽅jar包(不需要⾃⼰下载jar包)
2. 管理jar包之间的依赖关系(maven⾃动关联下载所有依赖的jar包)
2、将项⽬拆分成若⼲个模块:借助于Maven可以将⼀个项⽬拆分成多个⼯程。
(例如爱洋葱)
Maven能⼲的事情:
清理:删除编译的结果,为重新编译做准备。
编译:java->class
测试:针对于项⽬中的关键点进⾏测试,也可⽤项⽬中的测试代码去测试开发代码
报告:将测试结果进⾏显⽰
打包:将项⽬中包含的多个⽂件压缩成⼀个⽂件,⽤于安装或部署(java项⽬打成⼀个jar包,web项⽬打成⼀个war包,⽗⼯程-pom) 安装:将打成的包,放到本地仓库,供其他项⽬使⽤。
部署:将打成的包,放到服务器上,准备运⾏。
Eclipse中的项⽬,要在Tomcat中运⾏,需要部署:
a、通过eclipse中add and remove按钮进⾏部署
b、将Web项⽬打成⼀个war包,然后将该war包复制到Tomcat/webapps中即可
通常下载⼀个jar包,先在本地仓库中下载,如果本地仓库中不存在,则再联⽹到中央仓库(镜像)去下载。
约定配置:
Maven 提倡使⽤⼀个共同的标准⽬录结构,Maven 使⽤约定优于配置的原则,⼤家尽可能的遵守这样的⽬录结构。
如下所⽰:
⼆、Maven POM
POM(项⽬对象模型) 是 Maven ⼯程的基本⼯作单元,是⼀个XML⽂件,包含了项⽬的基本信息,⽤于描述项⽬如何构建,声明项⽬依赖,等等。
执⾏任务或⽬标时,Maven 会在当前⽬录中查找 POM。
它读取 POM,获取所需的配置信息,然后执⾏⽬标。
POM 中可以指定以下配置:
项⽬依赖
插件
执⾏⽬标
项⽬构建profile
项⽬版本
项⽬开发者列表
相关邮件列表信息
在创建 POM 之前,我们⾸先需要描述项⽬组 (groupId), 项⽬的唯⼀ID。
所有 POM ⽂件都需要 project 元素和三个必需字段:groupId,artifactId,version。
通过groupId,artifactId,version可以在本地仓库唯⼀标识⼀个模块。
三、依赖
A中的某些类,需要使⽤B中的某些类,则称为A依赖B
在maven项⽬中,如果要使⽤⼀个当时不存在的jar或模块,则可以通过依赖实现(去本地仓库、远程仓库去寻找)1、依赖的范围、依赖的有效性:
Compile(默认) test provided
2、依赖排除
3、依赖的传递性
A.jar->
B.jar->
C.jar
要使A.jar->C.jar:当且仅当 B.jar依赖于C.jar的范围是compile
多个maven项⽬(模块)之间如何依赖:p项⽬<-q项⽬
1. p项⽬install到本地仓库
2. q项⽬依赖,在pom.xml中放⼊p项⽬的坐标:
1<dependency>
2
3<groupId>aa.test</groupId>
4
5<artifactId>HelloWorld</artifactId>
6
7<version>0.0.1-SNAPSHOT</version>
8
9</dependency>
4、依赖原则
a、最短路径优先原则
b、路径长度相同:
i、在同⼀个pom.xml⽂件中有2个相同的依赖,则后⾯的依赖会覆盖前⾯的依赖(严禁使⽤本情况)
ii、如果是不同的pom.xml中有2个相同的依赖,则先声明的依赖会覆盖后声明的依赖
改eclipse中jdk的版本:
在maven的安装⽬录中,打开setting.xml,在<profiles>节点下,加⼊以下代码:
1<profile>
2
3<id>jdk-1.8</id>
4
5<activation>
6
7<activeByDefault>true</activeByDefault>
8
9<jdk>1.8</jdk>
10
11</activation>
12
13<properties>
14
15<piler.source>1.8</piler.source>
16
17<piler.target>1.8</piler.target>
18
19
20<pilerVersion>1.8</pilerVersion>
21
22</properties>
23
24</profile>
然后再在eclipse中创建maven⼯程时,jdk就是1.8的了。
改pom.xml⽂件中的依赖的版本:
⾸先在根节点中插⼊<properties></properties>节点,然后在这个节点⾥,添加类似这样的版本号信息: <spring.version>4.1.5.RELEASE</spring.version>
<lucene.version>3.6.2</lucene.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>(这个是⽂件的编码)
然后在依赖中,写成以下形式(类似于EL表达式):
1<dependency>
2
3<groupId>org.springframework</groupId>
4
5<artifactId>spring-context</artifactId>
6
7<version>${spring.version}</version>
8
9</dependency>
四、命令
执⾏mvn命令:必须在pom.xml所在⽬录执⾏
Maven常见命令:
mvn compile --只编译main⽬录中的java⽂件
mvn test 测试,运⾏的是test/java中的代码
mvn package 打成 jar/war包,放在项⽬的target⽂件夹中
mvn install 将开发的模块放⼊本地仓库,供其他模块使⽤(放⼊的位置,是通过gav决定)
mvn clean 删除target⽬录(删除编译⽂件⽬录)
mvn deploy 将项⽬部署到Tomcat中,然后即可运⾏。
在eclipse中创建maven⼯程:
1、配置maven:
配置maven版本(不⽤⾃带的,⽤⾃⼰安装的)
配置本地仓库:设置settings.xml
如果执⾏package命令,则依次执⾏resources、compile、test、package命令。
Maven⽣命周期:
⽣命周期中的顺序:a b c d e
当我们执⾏c命令,则实际执⾏的是a b c
⽣命周期包含的阶段:3个阶段
clean ⽣命周期:清理
pre-clean clean post-clean
default ⽣命周期:默认
site ⽣命周期:站点
pre-site site post-site site-deploy
五、继承
使⽤继承,可以通过⽗⼯程,统⼀管理依赖的版本。
1、创建⽗⼯程:⽗⼯程的打包⽅式为pom
2、在⽗⼯程的pom.xml中编写依赖:
1<dependencyManagement>
2<dependencies>
3<dependency>
4 ......
5</dependency>
6</dependencies>
7</dependencyManagement>
3、在⼦⼯程中加⼊⽗⼯程的gav(写在<parent/>标签中)。
4、在⼦⼯程的pom.xml中写⼊<relativePath>../B/pom.xml</relativePath>(⼦⼯程pom相对于⽗⼯程pom的相对路径)
5、在⼦⼯程中需要声明:使⽤⽗⼯程的哪些依赖:
<dependency>
<groupId>..</groupId>
<artifactId>..</artifactId>
</dependency>(只需要ga,不需要v了)
六、聚合
Maven2项⽬依赖于maven1项⽬,则在执⾏时,必须先将maven1加⼊到本地仓库中(install),之后才能执⾏maven2。
以上前置⼯程(maven1)的install操作,可以交由“聚合”⼀次性搞定。
聚合的使⽤:
在⼀个总⼯程中配置聚合:(聚合的配置,只能配置在打包⽅式为pom的Maven⼯程中)
1<!-- 配置聚合,避免前置⼯程的install操作 -->
2
3<modules>
4
5<module>../Maven1</module>
6
7<module>../Maven2</module>
8
9</modules>
配置完聚合之后,以后只要操作总⼯程,则会⾃动操作总⼯程中配置过的⼯程。
(只要install了总⼯程,则⼦⼯程都会install)
七、部署
正常部署:
⾸先将maven的web项⽬打包(打成war包,结果在项⽬根⽬录的target⽂件夹⾥),然后将war包复制到tomcat的webapps⽂件夹中,启动tomcat即可运⾏。
Maven部署:
1、配置cargo
在pom.xml中加⼊以下内容:
1<build>
2
3<finalName>MyWebProject</finalName><!-- ⼯程名 -->
4
5<plugins>
6
7<plugin>
8
9<groupId>org.codehaus.cargo</groupId><!-- 启动tomcat -->
10
11<artifactId>cargo-maven2-plugin</artifactId>
12
13<version>1.4.9</version>
14
15<configuration>
16
17<container>
18
19<containerId>tomcat8x</containerId>
20
21<home>E:\Tomcat 9\apache-tomcat-9.0.14</home>
22
23</container>
24
25<configuration>
26
27<type>existing</type>
28
29<home>E:\Tomcat 9\apache-tomcat-9.0.14</home>
30
31<!-- 默认8080 -->
32
33<!-- <properties> -->
34
35<!-- <cargo.servlet.port>8888</cargo.servlet.port> -->
36
37<!-- </properties> -->
38
39</configuration>
40
41</configuration>
42
43<executions>
44
45<execution>
46
47<id>cargo-run</id>
48
49<phase>install</phase>
50
51<goals>
52
53<goal>run</goal>
54
55</goals>
56
57</execution>
58
59</executions>
60
61</plugin>
62
63</plugins>
64
65</build>
2、Maven命令:deploy
然后run as->maven build...->deploy,然后打开浏览器,输⼊localhost:8080/项⽬名称/,即可运⾏。