Stage3-day09-Maven

参考博客:http://www.cnblogs.com/whgk/p/7112560.html        https://blog.csdn.net/zjf280441589/article/details/53044308

Maven是一个实现自动化构建的工具。Maven是基于项目对象模型(POM project object model)。Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。

安装

  1. 下载压缩包,解压操作。要使用maven工具前提:jdk环境、maven工具所在路径尽量不要有中文和空格

  2. 配置maven的环境变量与jdk配置相似:变量名MAVEN_HOME 值是maven的安装路径,然后在path中添加值 %MABEN_HOME%\bin

使用

maven的功能是构建项目,管理jar包--jar包的存储位置包括三种:本地库(本地计算机),私服(局域网中的某台电脑),中央仓储/镜像仓储(maven官网维护的仓库)

如何配置本地库

在maven安装目录中找到conf文件夹,在里面找到settings.xml配置文件,找到localRepository标签,该标签就是配置本地库的,如果没有配置本地库,默认是C盘中用户文件夹下.m2的下的repository文件夹

私服这里不做配置

中央库/镜像库的配置

如果没有配置,就直接取maven的中央库中去找了,中央库地址:https://mvnrepository.com/

准备

maven工具是一个构建工具,要先有原材料(java代码),才能生成应用程序;先准备原材料

maven项目有路径格式的要求:顶级文件夹是项目文件夹,在项目文件夹中有src文件夹和pom文件;在src文件夹中又有main和test两个下级文件夹;在main和test文件夹中分别又有java和resource文件夹。

注:maven项目路径约定好,不能改变

项目实现:约定>配置>代码

java非测试类放到main文件夹下的java文件夹,所有的测试类放到test文件夹下的java文件夹;所有项目中最终发布时要用到的配置文件放到main文件夹的resource文件夹中;测试时用到的配置文件放到test文件夹的resource文件夹中

maven工具不能自己实现原材料,需要借助其他工具准备原材料;所以要用到eclipse和maven进行整合;idea和maven进行整合

eclipse和maven的工具整合

目前eclipse工具已经整合了maven插件不需要我们再手动配置,我们查看一下maven整合情况和版本

在eclipse中创建maven项目---java项目和web项目,我们以java项目为例子

group id设置项目分组---一般就是域名倒置

artifact id设置项目名

version设置版本号

packaging设置当前是java还是web项目,或者父项目

name和description都是描述

我们写的两个类,分别位于各自的文件夹下

我们写了一个单元测试,以前需要手动导包buildpath,但是现在我们可以在pom.xml中通过填写依赖让maven自动帮我们找到对应的包。

maven命令

maven常用命令:

mvn compile 编译,将Java 源程序编译成 class 字节码文件。

mvn test 测试,并生成测试报告

mvn clean 将以前编译得到的旧的 class 字节码文件删除

mvn package 打包,动态 web工程打 war包,Java工程打 jar 包。

mvn install 将项目生成 jar 包放在仓库中,以便别的模块调用

项目名右击--Run As--maven build是执行上一次的命令操作,maven build..可以配置要执行的命令,这一个就可以执行所有的命令

mvn compile命令

mvn clean命令 :清理字节码文件

   

mvn test命令:测试并生成报告

mvn package命令:打包,java工程打成jar包,动态web工程打成war包

mvn install命令:将生成的jar包放到仓库中以便别的项目调用

创建动态web项目

eclipse和maven整合之后,创建一个web项目;需要注意当创建完成时,是没有web项目的标志的即没有WEB-INF文件夹和web.xml文件;我们可以自己复制进去也可以借用eclipse生成。

第一种方式:

第二种方式:

我们在使用第二种方式的时候,会产生META-INF文件夹,更全面,同时,他默认产生的web文件夹名是WebContent,同时是放在根目录下的,为了保持一致,我们最好改一下路径以及文件夹的名称:src/mian/webapp。步骤是先把Dynamic Web Module签名的复选框取消,然后点击apply,然后再点击复选框选中,这时候会提示我们futher configuration available,我们点这个进行配置,同时生成web.xml文件

这也只是一次性修改,每次创建项目都会回到初始状态。

jdk可以修改默认值,可以在settings.xml文件中指定jdk版本号

<profile>
	<id>jdk-1.8</id>
	<activation>
		<activeByDefault>true</activeByDefault>
		<jdk>1.8</jdk>
	</activation>
	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>

项目构建的环节

  1. 清理环节:是指将以前生成的字节码文件删除,为新生成字节码文件做准备;清理环节对应一个命令:mvn clean

  2. 编译环节:是指由源文件生成字节码文件;编译环节对应的命令:mvn compile
  3. 测试环节:是指对test--java包中的代码(测试代码)进行运行;对应的命令:mvn test
  4. 打包环节:是指对项目文件进行打包,最后根据java项目还是web项目生成相应的压缩包;如果是java项目那么生成.jar包,如果是web项目生成.war包;对应的命令时:mvn package;生成的包的名称组成是:项目名+版本号
  5. 安装环节:是指将生成的包,上传到仓库里面的操作;可以上传到本地库的命令:mvn install
  6. 部署环节:是指项目部署到服务器,命令是:mvn site

当执行靠后的构建环节命令时,会从最开始的环节构建起。

当把压缩包上传到仓库的时候---本地库,看到了路径关系,这个路径关系是和当前项目的组名、项目名、版本号有关;这三项内容:组名、项目名、版本号共同组成一个坐标。由这个坐标可以唯一确定一个包

版本介绍

例如:2.0.2.RELEASE

2:主版本号,当功能模块有较大更新或者整体架构发生变化时,主版本号会更新

0:次版本号,次版本号表示只是局部的一些变动

2:修改版本号,一般是bug的修复或者是小的变动

RELEASE位置:希腊字母版本号,用来标注当前版本的软件处于哪个开发阶段

 

希腊字母版本号:

BASE:设计阶段,只有相应的设计没有具体的功能实现

ALPHA:软件的初级版本,存在较多的bug

BETA:表示相对ALPHA有了很大的进步,消除了严重的bug,还存在一些潜在的bug

RELEASE:表示该版本是最终版

maven中的特性

  1. 依赖---最终当前项目需要其他的项目所生成的jar包,这些jar包可以称为依赖
  2. 如何在maven项目中设置依赖:即当前项目需要哪些jar包;到pom.xml文件中实现配置       
  3. maven工具可以帮助管理jar包,维护依赖关系

  4. 依赖的传递性:当在当前项目中配置实现依赖的时候,换句话说就是当前的项目需要一个jar包,那么假如jar中的类里面的代码又需要另一个jar包,那么此时当前项目在配置第一个jar包时会把第二个jar包一起依赖过来,比如下图,我们知道了核心包,但是这个核心包需要log包,所以会一起把这个包也引入过来

  5. 依赖的作用范围

    1. 根据jar中的类可以在哪使用,是否被发布在哪个位置使用:是指当前的jar包中类等内容是否可以在main--java源文件中使用或者是test-java源文件中使用是否被发布:是指当前的jar包是否在部署被部署到服务器

    2. 如何设置作用范围:在坐标之后添加<scope>标签,可以设置三中作用范围:compile,test,provided

    3. compile值表示当前的jar包中的类等内容可以在main-java的源文件中被使用,也可以在test-java源文件被使用,同时参与部署

      test值表示当前jar包中的类等内容可以在test-java的源文件中被使用,不能再main-java中被使用;不参与部署

      provided值表示当前jar包中的类等内容可以在main-java源文件和test-java源文件中被使用,不参与部署

      默认值compile

  6. 在eclipse和maven整合之后,通过eclipse实现代码的开发,而通过maven实现后续操作:清理、编译、测试、打包、安装、部署

    一个web项目,需要先部署才能测试,那么可以在maven的pom.xml文件中添加插件,添加此插件之后,可以替代eclipse中的tomcat整合,实现通过此插件实现部署

  7. 排除性

    从当前项目中将指定的jar包排除,是指当由传递特性,在依赖一个包的时候会把另一个jar包同时依赖过来,假设不需要同时依赖这另一个包,那么采用排除性;

  8. 依赖就近原则

    1. 如果当前项目直接依赖和间接依赖,那么最终按照就近原则肯定是直接依赖。

    2. 就近是在pom.xml文件中按照先后顺序,哪个依赖在前,那么哪个依赖作为作为最终的

  9. 版本号的统一管理

在pom.xml文件中,依赖设置,在起初设置了一种版本,后来由于需求可能需要变动另一种版本;那么如果pom.xml文件中没有采用统一版本管理,就会出现一个版本号一个版本号的修改,不方便;所以统一版本管理操作标签名是我们自定义的

继承特性

在创建maven项目的时候,可以先创建父项目,再创建子项目,使子项目继承父项目;目的是在父项目中进行统一管理

  1. 先创建父项目,需要注意的是父项目必须选择pom选项
  2. 由父项目继承出现子项目,如果手动设置,在子项目的pom文件中添加<parent>标签,添加父坐标即可

聚合

是指可以将多个模块,聚合称为一个整体

  1. 父项目必须是pom项目
  2. 子项目使用模块创建

刚开始的聚合项目什么都没有,他的作用全是靠子模块实现的。

创建子模块不能使用Maven project了,要使用Maven module

子模块创建后会在聚合项目中显示,但是实际编辑还是在子模块中进行的

同时聚合项目的pom.xml中也会有体现

部署(install)的时候只需要部署聚合项目即可,子模块会随着父项目自动部署

我们去maven的本地仓库中可以看到三个项目都已经部署了,但是父项目中没有jar包/war包,jar包/war包在对应的子项目中

猜你喜欢

转载自blog.csdn.net/qq_42837554/article/details/90243567