Maven深入浅出

来源:互联网 发布:sql按时间降序排列 编辑:程序博客网 时间:2024/06/15 06:19

Maven总结

 

学习目标: Maven简介、Maven仓库、Maven的安装和配置、Maven的使用

 

1.何为Maven

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、依赖管理和项目信息管理。

2.Maven是优秀的构建工具

自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。是跨平台的,无论是Windows上,还是LinuxMac上,都使用相同命令。

3.Maven不仅仅是构建工具,也是依赖管理工具、项目信息管理工具。

4.Maven仓库

Maven仓库就是放置所有JAR文件(WARZIPPOM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR

Maven仓库分类

 

5.Maven仓库——中央仓库

查询中央仓库地址   http://search.maven.org

6.Maven仓库——私服    

私服地址  http://10.10.8.201:8081/nexus/index.html

私服:一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。

私服优点:节省自己的外网带宽、加速Maven构建、部署第三方构件、提高稳定性,增强控制、降低中央仓库的负荷。

 

 工作当中要用的地址:

 <mirror>

      <id>alimaven</id>

      <name>aliyun maven</name>

      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

      <mirrorOf>central</mirrorOf>        

    </mirror>

7.Maven安装和配置

1.http://maven.apache.org/download.html下载最新的maven,解压到指定目录。

2.配置环境变量

3.控制台中执行mvnv测试是否配置成功

   出现如下字样:

 

 

4.添加需要使用的Maven位置【安装——环境准备】

   

5.设置用户settings.xml文件

 

8.Maven使用:新建一个Maven支持的web项目,选择maven-archetype-webbapp模板。

9. Maven项目目录

 

10. Maven使用

1. 新建一个Maven支持的web项目,选择 maven-archetype-webbapp模板。

2.检查项目的编码是否是utf-8,检查项目使用的jdk版本。

3.修改项目基本信息。

4.配置项目的自定义属性及项目依赖。

 

 

 

10.2项目基本信息

modelVersion:当前POM模型版本,对于Maven3必须为4.0.0

groupId:定义当前项目隶属的实际项目。

artifact:定义实际项目中的一个Maven项目(模块)。

version:定义Maven项目当前所处版本。

packaging:定义Maven项目打包方式。默认为jar

classifier:定义构建输出的一些附属构件。生成javadoc等。由 插件自动生成,不能直接定义。

 

坐标:groupId:artifact:version:packaging

构件名称:artifact-version[-classifier].packaging

10.3 依赖范围

compile(编译范围) compile是默认的范围,会被打包。

provided(已提供范围) provided依赖只有在当JDK或者 一个容器已提供该依赖之后才使用。它们不是传递性的,也不会被打包。

runtime(运行时范围) runtime依赖在运行和测试系统的 时候需要,但在编译的时候不需要。

test(测试范围)只有在测试编译和测试运行阶段可用。

system(系统范围)必须显式的提供一个对于本地系统中JAR文件的路径。注意该范围是不推荐使用。

11. Maven使用后续工作

进行项目测试、打包。命令:mvn clean deploy

发布版本。

命令: mvn release:prepare 准备发布

  mvn release:rollback 回退release:prepare操作

mvn release:perform 执行版本发布

 

12.Maven常用命令

mvn archetype:generate :创建 Maven项目

mvn compile :编译源代码

mvn package : 依据项目生成 jar文件

mvn install :在本地 Repository中安装jar  

mvn deploy:将jar包发布到远程仓库

mvn eclipse:eclipse :生成 Eclipse项目文件

13.项目开发阶段

1创建项目

  项目类型 1 javase项目2 javaee项目

2编码阶段

   编码+添加依赖jar+TOMCAT配置

3编译项目

  jdkjavac

4运行项目(找到项目的main方法)

  jdkjava命令

5打包发布

14.maven融合了四个阶段(控制依赖jar仓库)

<dependency>

   <groupId>公司名(cn.easytop</groupId>

   <artifactId>项目名</artifactId>

   <version>版本号</version>

</dependency>

 

SNAPSHOT(开发阶段(不稳定))

RELEASE (发布阶段(稳定))

15. 学习命令是作为开发工具的基础,这样会很容易上手。

16. Maven原理图

 

第二部 maven的深入

1. pom.xml决定了这个项目的类型 这个文件是整个maven项目的灵魂。

插件的理解:表示在maven构建中执行的jar名称 插件名-maven-plugin命名,可以通过jar包中plugins.xml中找到所有的配置定义

插件:其实就是临时加上去的东西,比如游戏的外挂。

2.<scope>system</scope>作用  

介绍 scope各个值的参考

 

compile:默认的scope。任何定义在compile scope下的依赖将会在所有的class paths下可用。maven工程会将其打包到最终的arifact中。如果你构建一个WAR类型的artefact,那么在compile scope下引用的JAR文件将会被集成到WAR文件内。  

  

provided:这个scope假定对应的依赖会由运行这个应用的JDK或者容器来提供。最好的例子就是servlet API。任何在provided scope下定义的依赖在构建时的类路径里是可用的,但是不会被打包到最终的artifact中。如果是一个WAR的文件,servlet API在构建时的类路径里是可用的,但是并不会被打包到WAR文件中。  

  

runtime:在runtime scope下定义的依赖只会在运行期可用,而在构建期的类路径下不可用。这些依赖将会被打包到最终的artifact中。比如你有一个基于web的应用需要在运行时访问MySQL数据库。你的代码没有任何MySQL数据库驱动的硬依赖。你的代码仅仅是基于JDBC API来编写,在构建期并不需要MySQL数据库驱动。然而,在运行期,就需要相应的驱动来操作MySQL数据库了。因此,这个驱动应该被打包到最终的artifact中。  

  

test:只用于测试变异的依赖(比如JUnit),execution必须定义在test scope下。这些依赖不会被打包到最终的artefact中。  

  

system:于provided scope很像。唯一的区别在于,在system scope中,你需要告诉Mave如何去找到这个依赖。如果你要引用的依赖在Maven仓库中不存在时,就可以用这个scope。不推荐使用system依赖。  

  

import:从其它的pom文件中导入依赖设置。

3.<!-- 依赖 当前的项目依赖那些jar -->

与它相关的所有jar包,全部下载下来

 

4.端口号 字符集(解决乱码问题)

maven插件 表示在maven构建构成中执行的jar名称 插件名-maven-plugin命名

可以通过 jar包中plugins中找到所有的配置定义

5.项目的关系继承:

在创建项目时,选中pom类型,就是父类型。

特点:

只要是在《dependencies》中依赖的jar包,一定会出现在子类中,适合项目开发,而在《dependencyManagement》中出现的,在其子类中可以不出现,可以通过《parent》来找到父类,并通过《dependencies》来选择父类中出现的jar包,适合框架开发。

 

原创粉丝点击