一、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 <maven.compiler.source>1.8</maven.compiler.source>
16
17 <maven.compiler.target>1.8</maven.compiler.target>
18
19
20 <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
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/项目名称/,即可运行。

最新文章

  1. LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
  2. java中return与finally的执行顺序
  3. XML学习摘要
  4. yii2 使用twig 模板引擎
  5. Jquery,ajax返回json数据后呈现到html页面的$.post方式。
  6. Ubuntu14.04 caffe 配置
  7. Mac下go语言goclipse插件安装部署
  8. highlight a DOM element on mouse over, like inspect does
  9. java操作oracle的blob,clob数据
  10. concurrent.futures
  11. freemarker中的left_pad和right_pad(十五)
  12. J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())
  13. 《Linux就该这么学》 - 必读的红帽系统与红帽linux认证自学手册
  14. 在.NET开发中的单元测试工具之(2)——xUnit.Net
  15. centos7 mysql数据库安装和配置(转, 未验证)
  16. linux每日命令(33):diff命令
  17. 36纯 CSS 动画原理,在页面上表现日蚀现象
  18. mssqlservers数据嗅探
  19. CentOS7.3安装mysql数据库
  20. GOF设计模式快速学习

热门文章

  1. 安卓app功能或自动化测试覆盖率统计(不用instrumentation启动app)
  2. 晚间测试3 B. 单(single)
  3. 【题解】hdu4757 【TJOI2018】异或
  4. Python 自动化测试全攻略:五种自动化测试模型实战详解
  5. 最新vue项目添加水印
  6. antd pro table中的文件上传
  7. CSS元素的显示与隐藏
  8. C++中线程安全单例模式的正确实现方式
  9. 每个人都可以用C语言写的推箱子小游戏!今天你就可以写出属于自己项目~
  10. docker启动服务