Maven

*Maven

一、Maven的简介:

​ 1、Maven是自动化构建工具,简单来讲就是一款项目管理工具;

​ 2、传统项目没有使用Maven带来的问题:

​ 2.1、很多模块,模块之间有关系,手工管理关系,比较繁琐。

​ 2.2、需要很多第三方功能,需要很多jar文件,需要手工从网络中获取各个jar文件。

​ 2.3、需要管理jar的版本,比如说你需要使用mysql5.1.5.jar,那么你那mysql1.4.0.jar就用不了。

​ 2.4、管理jar文件之间的一依赖,比如说a.jar需要使用b.jar里面的类,必须要现获取b.jar才可以使用a.jar;

​ 什么是依赖呢?

​ a.jar需要b.jar的这种关系就叫做依赖,或者你的项目中要使用mysql的驱动,也可以叫做项目依赖mysql驱动。

​ a.class使用b.class,这种情况叫做a依赖b类。

​ 3、现在项目使用Maven后的优点:

​ 3.1、Maven可以管理jar文件。

​ 3.2、自动下载jar和他的文档,源代码。

​ 3.3、管理jar之间的依赖,a.jar需要b.jar,Maven就会自动下载b.jar。

​ 3.4、管理你需要的jar版本。

​ 3.5、帮你编译程序,把java编译为class。

​ 3.6、帮你测试你的代码是否正确。

​ 3.7、帮你打包文件,形成jar文件,或者war文件。

​ 3.8、帮你部署项目。

​ 4、Maven用于项目的构建:

​ 构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,打包,部署等等。Maven支持的构建包括一下:

​ 4.1、清理:把之前的项目编译的东西删除掉,为新的编译代码做准备。

​ 4.2、编译:把程序源代码编译为执行代码,java-class文件。批量的,Maven可以同时把成百上千的文件编译为class。而javac不一样,javac一次只能编译一个文件。

​ 4.3、测试:Maven可以执行测试程序代码,验证你的功能是否正确。批量的,Maven可以同时执行多个测试代码,同时测试很多功能。

​ 4.4、报告:生成测试结果的文件,测试通过没有。等等。

​ 4.5、打包:把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。这个压缩文件就是项目的结果文件,通常java程序,压缩文件就是.jar扩展名的。对于web应用来说,压缩文件的扩展名是.war。

​ 4.6、安装:将步骤5中生成的jar文件或war文件安装到本机仓库。

​ 4.7、部署:把程序安装好,就可以执行。

​ 5、Maven的核心概念:

​ 用好Maven,就必须了解这些概念。

​ 5.1、POM:一个文件,名称是pom.xml,pom翻译过来叫做“项目对象模型”,简而意之Maven 可以将一个项目当做一个模型使用,从而控制Maven构建项目的过程,管理jar依赖。

​ 5.2、约定的目录结构:Maven项目的目录和文件的位置都是规定的。

​ 5.3、坐标:是一个唯一的字符串,用来表示资源的。

​ 5.4、依赖管理:管理你的项目可以使用jar文件。

​ 5.5、仓库管理(了解):你的资源存放的位置。

​ 5.6、生命周期:Maven工具构建项目的过程,就是生命周期。

​ 5.7、插件和目标(了解):执行Maven构建的时候使用的工具和插件。

​ 5.8、继承

​ 5.9、聚合

​ 6、Mac下配置Maven的环境变量:

​ 6.1、进入终端,输入vim .bash_profile,输入i,切换编辑状态,在此之前找到Maven的目录。

​ 6.2、输入命令:

​ MAVEN_HOME=/Users/wufuqiang/maven_work/apache-maven-3.8.1

​ PATH= M A V E N H O M E / b i n : MAVEN_HOME/bin: MAVENHOME/bin:PATH

​ export MAVEN_HONE

​ export PATH

​ 6.3、保存文件并退出,然后输入命令:source .bash_profile,目的是让刚配置的文件生效,然后输入mvn -v查看配置状态。

二、Maven的约定:

​ 1、Maven约定的目录结构,约定是大家都遵循的一个规则。

​ 每一个Maven项目在磁盘中都是一个文件夹(比如:项目-Hello)

​ Hello/

​ —/src

​ ------/main #放你的主程序java代码和配置文件

​ ---------/java #你的程序包和包中的java文件

​ ---------/resources #你的java程序中要使用的配置文件

​ ------/test #放测试程序代码和文件的(可以没有)

​ ---------/java #测试程序包和包中的java文件

​ ---------/resources #测试java程序中要使用的配置文件

​ —/pom.xml #Maven的核心文件(Maven项目必须有)

​ 2、位于Maven根目录中,在终端内输入命令:mvn compile,表示编译src/main下的所有java文件。

​ 3、https://repo.maven.apache.org:中央仓库的地址。

​ 4、Maven工具执行的操作需要很多插件(java类–jar文件)完成的。

​ 5、jar文件在Maven中称之为“插件”–插件是完成某些功能的。

​ 6、首次使用Maven编译项目的时候,会下载很多插件,插件都存放在了–默认仓库(本机仓库),具体位置(以Windows为例)C:\Users\(登录操作系统的用户名)Adminstrator\MAVEN_HOME\repository

​ 7、执行mvn compile命令后,结果是在项目的根目录下生成target目录(结果目录),maven编译的程序,最后的class文件都放在target目录中。

三、Maven中的仓库:

​ 1、设置本地存放资源的目录位置(设置本机仓库):

​ 1.1、修改Maven的配置未见,Maven安装目录/conf/settings.xml,先备份一份setting.xml(以防止后期还原)。

​ 1.2、进入setting.xml文件,修改制定你新建的目录位置(不要使用中文目录)。

​ 1.3、仓库是什么:仓库是存放各种东西的,存放Maven使用的jar和我们项目使用的jar。

​ >Maven使用的插件(各种jar)

​ >我们项目使用的jar(第三方工具)

​ 1.4、仓库的分类:

​ >本地仓库:就是个人计算机上的文件夹,存放各种jar

​ >远程仓库:在互联网上,使用网络才能使用的仓库

​ ①:中央仓库,最权威的,世界上所有开发人员共享使用的一个集中仓库:https://repo.maven.apache.org:中央仓库的地址。

​ ②:中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都有镜像。

​ ③:私服,在公司内部,在局域网中使用的,不是对外使用的。

​ 1.5、仓库的使用:Maven仓库的使用不需要人为参与。

​ 比如开发人员需要使用mysql驱动,首先会去查找本地仓库有没有,再去私服查找(前提是有私服的情况下),再去查找镜像,再去查找中央仓库,直到找到为止会自动备份一份到本地。

四、pom:项目对象模型,Project Object Model

​ 1、坐标:唯一值,在互联网中唯一表示一个项目的。

​ 公司域名的倒写

​ 自定义项目名称

​ 自定义版本号

​ https://mvnrepository.com/搜索使用的中央仓库,使用groupId或者artifactId作为搜索条件

​ 2、packaging:打包后压缩文件的扩展名,默认是jar,web应用是war

​ packaging可以不写,默认是jar

​ 3、依赖:

​ dependencies和dependency,相当于是java代码中的import

​ 你的项目中要使用的各种资源说明,比如我的项目中要使用mysql驱动

​ mysql

​ mysql-connector-java

​ 5.1.9

​ 4、properties:设置属性

​ 5、build:Maven在进行的构建时,配置信息,例如指定编译java代码使用的jdk版本。

五、Maven生命周期:Maven的命令,Maven的插件

​ Maven的生命周期:就是Maven构建项目的过程:清理,编译,测试,报告,打包,安装,部署。

​ Maven的命令:Maven独立使用,通过命令,完成Maven的生命周期的执行。maven可以使用命令,完成项目的清理,编译,测试等等。

​ Maven的插件:Maven命令执行时,真正完成功能的是插件,插件就是一些jar文件。

​ 1、单元测试(测试方法):用的是junit,junit是一个专门测试的框架(工具)。

​ junit测试的内容:测试的是类中的方法,每一个方法都是独立测试的。

​ 方法是测试的基本单位(单元)。

​ Maven借助单元测试,批量地测试类中的大量方法是否符合预期。

​ 2、使用步骤:

​ 1、加入依赖,在pom.xml加入单元测试依赖


​ junit
​ junit
​ 4.13.2
​ test

​ 2、在Maven项目中的src/test/java目录下,创建测试程序。

​ 推荐的创建类和方法的提示:

​ 2.1、测试类的名称,应该是:Test+你要测试的类名

​ 2.2、测试方法的名称,应该是:Test+方法的名称

​ 例如你要测试HelloMaven,创建测试类TestHelloMaven

​ 类中编辑:

​ @Test

​ public void testAdd(){

​ 测试HelloMaven的add方法是否正确

​ }

​ 其中testAdd叫做测试方法,它的定义规则:

​ >方法是public,必须的。

​ >方法没有返回值,必须的。

​ >方法名称是自定义的,推荐是Test+方法名称

​ >在方法的上面加入@Test

六、IDEA中使用Maven:

​ 1、在IDEA中设置Maven,让idea和maven结合使用。

​ idea中内置了maven,一般不适用内置的,因为使用内置修改maven的配置不太方便。

​ 使用自己安装的maven,需要覆盖idea中的默认的设置。让idea指定maven安装位置等信息。

​ 配置的入口:①:配置当前工程的设置(Mac适用):

​ IntelliJ IDEA->Preferences…->Build,Execution,Deployment

​ ->Build Tools->Maven:

​ Maven home path:maven的安装目录

​ User settings file:maven安装目录conf/setting.xml配置文件路径

​ Local repository:本地仓库的目录位置

​ ->Build Tools->Maven->Runner:

​ VM Options:archetypeCatalog=intrenal

​ JRE:你项目的jdk

​ archetypeCatalog=intrenal,maven项目创建时,会联网下载模板文件,比较大(7M),使用archetypeCatalog=internal,就不用下载,创建maven项目是速度就会快。

​ ②:配置以后新建工程的设置:(Mac适用):

​ File->New Project Settings->Preference for new project settings,剩下操作与上面一样。

​ 2、使用模板创建项目

​ 2.1、maven-archetype-quickstart:普通的java项目

​ 2.2、maven-archetype-webapp:web工程

七、maven常见操作:

​ 1、依赖范围,使用scope表示的:

​ scope的值有compile、test、provided、默认是compile

​ scope:表示依赖使用的范围,也就是在maven构建项目的哪些阶段中起作用。

​ maven构建项目:编译、测试、打包、安装、部署 过程(阶段)

​ 比如:junit的依赖使用范围是test,表示只在测试中有用。

​ compile:默认,在构建项目时,编译、测试、打包、部署都需要用到;

​ test:只在测试阶段用到;

​ provided:在部署时,由服务器提供,项目本身不需要自带;

2、maven的属性设置:

​ 标签中可以设置maven的常见属性,也可以自定义属性。

​ 2.1、在通过自定义标签声明变量(标签名就是变量名)

​ 2.2、在pom.xml文件中的其他位置,使用${变量名}使用变量的值

​ 2.3、自定义全局变量一般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量定义,再使用${变量名}来引用即可。

  <properties>

    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>

    <maven.compiler.source>1.7maven.compiler.source>

    <maven.compiler.target>1.7maven.compiler.target>

    <spring.version>5.2.5spring.version>
    <junit.vsersion>4.13junit.vsersion>
  properties>

​ 3、资源插件:

​ 3.1、作用:mybatis课程中会用到这个作用

​ >默认没有使用resources的时候,maven执行编译操作时,会把src/main/resources目录中的文件拷贝到target/classes目录总。对于src/main/java目录下的非java文件一律不处理,也不会拷贝到target/classes目录中

​ >有些时候,当我们的程序需要把一些文件放在src/main/java目录中,当我们在执行java程序时,需要用到src/main/java目录中的文件时,我们就需要使用到resources标签,需要告诉maven在mvn compile src/main/java目录下的程序时,将里面的文件一同拷贝到target/classes目录中。此时就需要在中加入

<build>
  <resources>
    <resource>
      <directory>src/main/javadirectory>
      <includes>
        <include>**/*.propertiesinclude>
        <include>**/*.xmlinclude>
      includes>
      
      <filtering>falsefiltering>
    resource>
  resources>
build>

你可能感兴趣的:(maven,java)