Maven入门


第一章:Maven安装:

1.需要改进项目的开发和管理,需要maven

  • (1)maven可以管理jar文件
  • (2)自动下载jar和它的文档,源代码
  • (3)管理jar直接的依赖,a.jar 需要 b.jar,maven会自动下载b.jar
  • (4)管理你需要的jar版本
  • (5)把你测试你的代码是否正确
  • (6)帮你编译程序,把java编译为class
  • (7)帮你打包文件,形成jar文件,或者是war文件
  • (8)帮你部署项目

2.构建:项目的构建

构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等。

maven支持的构建包括有:

  • 1.清理,把之前项目编译的东西删除掉,我新的编译代码做准备。

  • 2.编译,把程序源代码编译为执行代码,java—class文件。批量的,maven可以同时把成千上百的文件编译为class。

    • javac不一样,javac一次编译一个文件。
  • 3.测试,maven可以执行测试程序代码,验证你的功能是否正确。

    • 批量的,maven同时执行多个测试代码,同时测试很多功能。
  • 4.报告,生成测试结果的文件,测试通过没有。

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

  • 6.把5中生成的文件jar,war安装到本机仓库

  • 7.部署,把程序安装好可以执行。

3.maven核心概念:用好maven,了解这些概念

  • (1)pow:一个文件,名称是pom.xml,pom翻译过来叫做对象模型。maven把一个项目当做模型使用。可以控制maven构建项目的过程,管理jar依赖。
  • (2)约定的目录结构:maven项目的目录和文件的位置都是规定的。
  • (3)坐标:是一个唯一的字符串,用来表示资源的。
  • (4)依赖管理:管理你的项目可以使用jar文件。
  • (5)仓库管理(了解):你的资源存放的位置
  • (6) 生命周期(了解):maven工具构建的时候用的工具是插件
  • (7)插件和目标(了解):执行maven构建的时候用的工具是插件
  • (8) 继承
  • (9) 聚合

4.maven工具的安装和配置。

  • (1)需要从maven的官网下载maven的安装包

  • (2)解压安装包,解压到一个目录,非中午目录。

    • 子目录 bin:执行程序,主要是mvn.cmd
  • (3)配置环境变量

cmd下:
    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.疑问:mvn compile 编译src/main目录下的所有java文件的。

(1)为什么要下载
  • maven工具执行的操作需要很多插件(java类 - - jar文件)完成的。
(2)下载什么东西了
  • jar文件 - - 叫做插件 - - 插件是完成某些功能
(3)下载的东西存放到哪里了?C:\Users\用户名.m2\repository
  • 执行mvn compile,结果是在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中

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

  • 1.修改maven的配置文件,maven安装目录/conf/settings.xml

    • 先备份settings.xml
  • 2.修改local_repository 指定你的目录(不要使用中文目录)

maven安装:

  • 1.获取安装包,zip文件
  • 2.解压缩文件,到一个目录,非中文目录
  • 3.配置环境变量, M2_ HOME他的值是maven的安装目录
  • 4.在path中加入%M2_ HOME%\bin
  • 5.测试maven的安装,使用mvn -v,查看maven的版本信息

maven的核心概念:

  • 1.约定的目录结构

    • 项目的目录Hello
    • src和pom.xml平级的
    • src/test
      • java:测试程序代码的
      • resources:配置文件
    • src/main
      • java :主程序java文件
      • resources:配置文件
  • 2.坐标(gav)

    • 1.groupld :组织编码,域名倒写
    • 2.artifactld:项目名称
    • 3.version:自定义版本号
  • 3.依赖( dependency) : maven管理依赖

    • 使用依赖把jar导入到你的项目中。
    • junit
    • junit< /artifactld>
    • 4.11
  • 4.仓库

    • 存放的jar , maven的插件等等
    • 仓库分类
      • 中央仓库:最权威的,所有的资源都在这里
      • 本地仓库,可以在mave安装目录/conf/settings.xml指定, 非中文路径,不要有空
      • 中央仓库的镜像:分担压力的
      • 私服:公司的局域网内部使用的
  • 5.maven的命令

    • maven通过命令完成项目的构建
    • mvn clean :清理
    • mvn compile :编译src/main/java目录中的程序,把java编译为class文件,并放到target/classes目录中;同时会到target/classes目录中
    • mvn test-complie一编译src/main/test目录 下的java程序,拷贝到target/test-classes目录中
    • mvn test - 可以进行单元测试,使用junit测试src/main/java目录中的程序是否符合要求
    • mvn package:打包一把程序中src/main/ 下面的java编译后的class和resources中的配置文件放入到-个压缩
    • mvn install:把jar,war安装到本机的仓库中
  • 6.maven的生命周期和插件

    • 生命周期:项目的构建过程清理,编译,测试,报告,打包,安装,部署
    • 插件: maven提供的功能。用来执行清理。编译,测试,报告,打包的程序

maven常用设置

  • 1.maven自己的属性
<proiject.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
< maven.compiler.source> 1.8</maven.compiler.source>
<maven.compiler.target> 1.8 </maven.compiler.target>
  • 2.自定义变量
<!--自定义变量,表示版本号- ->
< spring.version> 5.2.5 </spring.version>
<junit.version>4.13</junit.version>
< dependency>

< groupld>junit </groupld>
< artifactld>junit</artifactld>
<version> ${junit.version}< /version>
<scope>test</scope>
</dependency>
  • 3.maven常用设置
<resource>
maven常用设置
< directory> src/main/java< /directory><!--所在的目录-->
<includes> <!--包括目录下的.properties, .xml文件都会扫描到-->
<include> **/*.properties < /include>
<include>**/*.xrml</include>
< /includes>
<--filtering 选项false不启用过滤器,*.property 已经起到过滤的作用了-->
< fitering> false</filtering>
3.resource资源插件
</resource>
</resources>
  • 1.默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到targ,对于src/main/java目录下的非java文件不处理。不拷贝到target/classes目录中
  • 2.我们的程序有需要把-些文件放在src/main/java目录中,当我在执行java程序时。需要用到src/main/javaE
    需要告诉maven在mvn compile src/main/java目录下的程序时。需要把文件一同拷贝到target/classes目录中,
    此时就需要在中加入.

5.仓库

1)仓库是什么:仓库是存放东西的,存放maven使用的jar和我们项目使用的jar

  • maven使用的插件(各种jar包)
  • 我项目使用的jar包(第三方的工具)

2) 仓库的分类:

  • 本地仓库,就是你的个人计算机的文件夹,存放各种jar
  • 远程仓库:在互联网上的,使用网络才能使用的仓库
    • (1):中央仓库,最权威的,所有开发人员都共享使用的一个集中的仓库,
    • (2):中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都是镜像
    • (3):私服,在公司内部,在局域网中使用的,不是对外使用的。

3) 仓库的使用,maven仓库的使用不需要人为参与。

  • 开发人员需要使用mysql驱动—>maven首先先查本地仓库—>私服—>镜像–>-中央仓库

6.pom:项目对象模型,maven仓库的使用不需要人为参与

pom.xml初识:

  • 坐标:唯一值,在互联网中唯一标识一个项目的
<groupId>公司域名的倒写<groupId>
<artifactId>自定义项目名称<artifactId>
<version>自定义版本号</version> 
www.mvnrepository.com:搜索使用中央仓库,使用groupId或者artifactId作为搜索条件
  • packaging:打包后压缩文件的扩展名,默认是jar,web应用是war。
  • 依赖:
    • dependencies和dependency ,相当于是java代码中import
    • 你的项目要使用的各种资源说明,比我的项目要使用mysql驱动
<dependencie s>
<!--依赖java代码中 import-->
<dependency>
<groupId>mysql</groupId>
<version>mysql - connector-java</artifactId>
<version>5.1.20</version>
</ dependency>
</ dependencies>
  • properties:设置属性
  • build:maven在进行项目的构建时,配置信息,例如指定编译java代码使用的jdk版本等。
<properties>
    <java.version>1.8</java.version>
    <java.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
  • pom.xml加入依赖的方式:
log4j日志依赖
<dependency>
<groupld>log4j</groupld>
<artifactld>log4j</artifactld>
<version>1.2.17</version>
</dependency>
junit单元测试依赖
<dependency>
<groupld>junit</groupld>
<artifactld>junit</artifactld>
<version>4.1 1 </version>
</dependency>

7.maven生命周期,maven的命令,maven的插件

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

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

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

  • 单元测试(测试方法):用的是junit,junit是一个专门测试的框架(工具)。
    • junit测试的内容:测试的是类中的方法,每一个方法都是独立测试的。方法是测试得基本单位(单元)。

maven借助单元测试,批量的测试你类中的大量方法是否符号预期的。

使用步骤:

  • 1.加入依赖,在pom.xml加入单元测试依赖
<dependency>
    <groupId>junit</groupId>
    <version>junit</artifactId>
    <version>4.11</version>
    <scope>text</ scope>
</dependency>
  • 2.在maven项目中的src/text/java目录下,
    • 创建测试程序。推荐的创建类和方法的提示:
    • 1.测试类的名称 是Test + 你要测试的类名
    • 2.测试的方法名称 是:Test + 方法名称
例如:你要测试HelloMaven,
创建测试类 TestHelloMaven
@Test

public  void  testAdd(){

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

}
其中testAdd叫做测试方法,它的定义规则
  • 1.方法是public的,必须的

  • 2.方法没有返回值,必须的

  • 3.方法名称是自定义的,推荐是Test + 方法名称

  • 4.在方法的上面加入@Test

mvn compile编译main/java/目录下的java 为class文件,同时把class拷贝到 target/classes目录下面把main/resources目录下的所有文件 都拷贝到target/classes目录下

第三章

1.在idea中设置maven,让idea和maven结合使用。

idea中内置了maven,一般不使用内置的,因为用内置修改maven的设置不方便。
使用自己安装的maven,需要覆盖idea中的默认的设置。让idea知道maven安装位置等信息
  • 配置的入口,①:配置当前工程的设置,

    • file–settings —Build, Excution , Deployment–Build
    • - -Maven
    • Maven Home di rectory: maven 的安装目录
    • User settings File :就是maven安装目录conf/setting . xm1配置文件
    • Local Repository : 本机仓库的目录位置
    • –Build Tools –Maven- -Runner
    • VM Options : arche typeCatalog- -internal
    • JRE:你项目的jdk
    • archetypeCatalog=internal,maven项 目创建时,会联网下载模版文件,
    • 比较大,使用 archetypeCatalog- internal,不用下载,创建maven项 目速度快
  • ②:配置以后新建工程的设置,

    • file–other settings–settings for New Project

2.使用模板创建项目

  • 1)maven-archetype-quickstart:普通的java项目
  • 2)maven-archetype-webapp:web工程

第四部分

1.依赖范围,使用scope表示的。

scope的值有 compile,test,provided
scope:表示依赖使用的范围,也就是在maven构建项目的哪些阶段中起作用。;
maven构建项目 清理,编译,测试,打包,安装,部署 过程(阶段)
junit的依赖范围是 test
依赖的范围: compile、test. provided ,默认采用compile
compile test provided
对主程序是否有效
对测试程序是否有效
是否参与打包
是否参与部署

第五部分:

<properties>
<!-- maven构建项目使用编码, 避免中文乱码-->
<project.build.sourceEncoding>UTF - 8</ project.build.sourceEncoding>
<!--编译代码使用的jdk版本-->
<maven. compiler.source>1.8< /maven.compiler.source>
<!--运行程序使用的jdk版本-->
<maven. compiler.target>1.8</maven.compiler.target>
</properties>

maven常用操作

1.maven的属性设置
  • 设置maven的常用属性
2.maven的全局变量
自定义属性,
  • 1.在通过自定义标签来声明变量(标签名就是变量名)
  • 2.在pom.xm|文件中的其他位置,使用${标签名}使用变量名的值
    • 自定义全局变量-般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量定义,再使用${变量名}
<!--自定义变量,表示版本号-->
<spring.version>5.2.5</spring.version> I
<!-- spring依赖-->
<dependency>
<groupId>org . springframework</groupId>
<artifactId>spring- core</artifactId>
<version> ${spring.version</version>
3.资源插件:
<build>
    <resources>
    <resource>
    <directory>src/main/java</directory><!--所在的目录-->
    <includes><!--包括目录下的. properties, .xml文件都会扫描到-->
    <include>**/*.properties</ include>
    <include>**/*.xml</include>
    </includes>
    <!- filtering选项false 不启用过滤器,* .property已经起到过滤的作用了-->
    <fil tering> false</filtering>
    </resource>
    </resources>
</build>
作用:mybaits课程中会用到这个作用
  • 1.默认没有使用resources的时候,maven执行编译代码时,会把src/main/resourse目录中的文件拷贝到target/classes目录中
    • 对于src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中
  • 2.我们的程序有需要把一些文件放在src/main/java目录中,当我在执行java程序时,需要用到src/main/java目录中的文件。需要告诉maven 在 mvn compile src/main/java 目录下的程序时,需要要把文件一同拷贝到target/classes目录中。
    • 此时就需要在中加入

文章作者:
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 !
  目录