概述
maven项目管理工具是apach旗下一款跨平台的项目管理工具,用于项目构建和项目依赖
跨平台:maven项目管理工具由java语言开发,所以具有跨平台特性;
项目构建:将一个写好的项目变成一个可以运行的项目的过程;
项目构建阶段:
清理:指的是清理上一次编译之后的字节码文件;
编译:将程序源代码编译为class 字节码文件;批量的,不像javac一次只能编译一个。
测试:执行项目中所有测试单元的代码;
打包:将写好的项目打包为指定格式的包;
安装:把打包生成的文件jar,war安装到本机仓库
部署:程序安装好之后就可以执行
maven中央仓库地址(通过这个地址搜索jar包坐标):https: / / mvnrepository. com/
作用
maven可以自动从中央仓库或者镜像仓库下载jar包和其依赖的其他jar包;
maven提供了一个本地仓库用于存放项目需要的所有jar包,会管理jar包的版本
maven不仅可以根据功能划分项目还可以根据项目结构:controller, service, dao, bean, util划分项目来合作开发
maven可以帮助部署项目
maven核心概念
①POM:一个文件 名称是pom. xml , pom翻译过来叫做项目对象模型。 maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。
②约定的目录结构: maven项目的目录和文件的位置都是规定的。
每一个maven项目在磁盘中都是一个文件夹(项目- Hello)
Hello/
-- - / src
-- -- -- / main #放你主程序java代码和配置文件
-- -- -- -- -- / java #你的程序包和包中的java文件
-- -- -- -- -- / resources #你的java程序中要使用的配置文件
-- -- -- / test #放测试程序代码和文件的(可以没有)
-- -- -- -- -- / java #测试程序包和包中的java文件
-- -- -- -- -- / resources #测试java程序中要使用的配置文件
-- - / pom. xml #maven的核心文件(maven项目必须有)
③坐标:是一个唯一的字符串,用来表示资源的。
④依赖管理:管理你的项目可以使用jar文件
⑤仓库管理(了解):你的资源存放的位置
⑥生命周期 ( 了解) :maven工具构建项目的过程,就是生命周期。
⑦插件和目标(了解):执行maven构建的时候用的工具是插件
⑧继承
⑨聚合
仓库
1)仓库是什么: 仓库是存放东西的, 存放maven使用的jar(插件)和 我们项目使用的jar(第三方的工具)
2)仓库的分类
>本地仓库,个人计算机上的文件夹,存放各种jar
>远程仓库,在互联网上的,使用网络才能使用的仓库
①:中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,中央仓库的地址:https://repo.maven.apache.org
②:中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都是镜像。
③:私服,在公司内部,在局域网中使用的,不是对外使用的。
3)仓库的使用,maven仓库的使用不需要人为参与。maven首先查本地仓库--->私服--->镜像--->中央仓库
1.修改setting.xml配置文件中的本地仓库:
< localRepository> E:\repository</ localRepository>
2.配置镜像仓库:
< mirror>
< id> alimaven</ id>
< name> aliyun maven</ name>
< url> http://maven.aliyun.com/nexus/content/groups/public/</ url>
< mirrorOf> central</ mirrorOf>
</ mirror>
eclipse中创建maven项目的注意事项
如果是创建web项目,需要修改修改web.xml文件约束,因为原来的版本是2.3:
<?xml version="1.0" encoding="UTF-8"?>
< web-app version = " 3.0"
xmlns = " http://java.sun.com/xml/ns/javaee"
xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= " http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >
< display-name> Archetype Created Web Application</ display-name>
</ web-app>
pom项目对象模型
坐标:唯一值, 在互联网中唯一标识一个项目的
< groupId> 公司域名的倒写</ groupId>
< artifactId> 自定义项目名称</ artifactId>
< version> 自定版本号</ version>
指定打包格式:
< packaging> war</ packaging>
dependencies和dependency,相当于是java代码中import:
< dependencies>
< dependency>
< groupId> junit</ groupId>
< artifactId> junit</ artifactId>
< version> 4.12</ version>
< scope> provided</ scope>
</ dependency>
</ dependencies>
maven的依赖排出:maven可以排除jar包依赖的其他jar包:
< dependency>
< exclusions>
< exclusion>
< groupId> junit</ groupId>
< artifactId> junit</ artifactId>
</ exclusion>
</ exclusions>
</ dependency>
maven会自动下载jar包依赖的其他jar包(依赖传递)也会自动解决jar包冲突maven在解决jar包冲突时:
路径不同,根据就近原则选择使用jar包;路径相同时,maven选择pom.xml文件中后引入的jar包;
properties:设置属性
build:maven在进行项目的构建时, 配置信息,例如指定编译java代码使用的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>
</ profile>
maven生命周期, maven的命令,maven的插件
maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行。
maven的插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,一些类。
清理:clean清除项目上一次编译的字节码文件
编译:compile将项目编译为字节码文件;
测试:test默认执行项目中类名包含Test的单元测试;
打包:package 将项目打包为指定格式的包,存放在target目录下(不会放到仓库中);
部署:install/ deploy: 将项目打包为指定格式的包,并将项目存放到仓库中;
junit
在maven项目中的src/ test/ java目录下,创建测试程序。
推荐的创建类和方法的提示:
1. 测试类的名称 是Test+ 你要测试的类名
2. 测试的方法名称 是:Test+ 方法名称
@Test
public void testAdd ( ) {
测试HelloMaven的add方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
1. 方法是public 的,必须的
2. 方法没有返回值,必须的
3. 方法名称是自定义的,推荐是Test+ 方法名称
4. 在方法的上面加入 @Test
idea中使用maven
1. idea中内置了maven ,一般不使用内置的, 因为用内置修改maven的设置不方便。使用自己安装的maven, 需要覆盖idea中的默认的设置。
配置的入口:
①:配置当前工程的设置, file-- settings -- - Build, Excution, Deployment-- Build Tools
-- Maven
Maven Home directory: maven的安装目录
User Settings File: 就是maven安装目录conf/ setting. xml配置文件
Local Repository: 本机仓库的目录位置
-- Build Tools-- Maven-- Runner
VM Options : - DarchetypeCatalog= internal
- DarchetypeCatalog= internal的用处:
maven项目创建时,会联网下载模版文件,比较大, 使用- DarchetypeCatalog= internal,不用下载, 创建maven项目速度快。
②:配置以后新建工程的设置, file-- other settings-- Settings for New Project
2. 使用模版创建项目
1 )maven- archetype- quickstart : 普通的java项目
2 )maven- archetype- webapp : web工程
maven常用操作
1.maven的属性设置
< properties> 设置maven的常用属性
2.maven的全局变量
自定义的属性:
1.在< properties> 通过自定义标签声明变量(标签名就是变量名)
2.在pom.xml文件中的其它位置,使用 ${标签名} 使用变量的值
自定义全局变量一般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量定义, 在使用${变量名}
3.资源插件
< build>
< resources>
< resource>
< directory> src/main/java</ directory>
< includes>
< include> **/*.properties</ include>
< include> **/*.xml</ include>
</ includes>
< filtering> false</ filtering>
</ resource>
</ resources>
</ build>
作用: mybatis课程中会用到这个作用
多模块项目中统一jar包版本管理
使用dependencymanagement标签,将要管理的jar包放入其中,注意这只是声名,不引入jar包,引入是在具体的模块中。