赞
踩
Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
Maven是用Java语言编写的。他管理的东西统统以面向对象的形式进行设计,最终他把一个项目看成一个对象,而这个对象叫做POM(project object model),即项目对象模型
(1)项目构建:提供标准的,跨平台的自动化构建项目的方式
(2)依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题
(3)统一开发结构:提供标准的,统一的项目开发结构,如下图所示:
各目录存放资源类型说明:
src/main/java:项目java源码
src/main/resources:项目的相关配置文件(比如mybatis配置,xml映射配置,自定义配置文件等)
src/main/webapp:web资源(比如html,css,js等)
src/test/java:测试代码
src/test/resources:测试相关配置文件
src/pom.xml:项目pom文件
https://maven.apache.org/download.cgi
Mavne不需要安装,减压缩可以使用。文件结构
各目录结构说明:
bin:可执行程序目录,
boot:maven自身的启动加载器
conf:maven配置文件的存放目录
lib:maven运行所需库的存放目录
配置环境变量:
然后进入命令提示符
需要注意的是:依赖java-jdk,而且变量名需要设置为JAVA_HOME,否则会出现错误。
仓库有三种:本地仓库,私服,中央仓库,其中私服和中央仓库都属于远程仓库
中央仓库:maven团队自身维护的仓库,属于开源的
私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库获取资源(保存具有版权的资源,包含购买或自主研发的jar;一定范围内共享资源,能做到仅对内不对外开放)
本地仓库:开发者自己电脑上存储资源的仓库,也可从远程仓库获取资源
我们说maven的仓库里存储了各种各样的资源(jar包),那这些资源我们如何找到它们呢?我们需要知道它们具体的一个位置才能知道如何找到它们,这个就叫坐标
坐标:maven中的坐标用于描述仓库中资源的位置,相当于放在电脑中不同文件夹的路径。
那maven中的坐标是如何构成的呢?
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>3.0-alpha-2</version>
</dependency>
maven坐标的主要组成如下:
groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis;com.itheima)
artifactId:定义当前资源的名称(通常是项目或模块名称,如:crm,sms)
version:定义当前资源的版本号
查询其他资源的坐标可以使用 https://mvnrepository.com/ 这个网站。
配置文件位于conf/setting.xml中文件。
默认的本地仓库位于:${user.home}/.m2/repository,如用户名为zs,则仓库的地址为:C:\Users\zs.m2\repository,不便于管理,我们使用自定义路径:D:\maven\LocalWarehouse
设置阿里镜像:
<!--配置阿里云maven私有仓库(即配阿里私服)--> <mirror> <id>alimaven</id> <mirrorOf>*</mirrorOf> <url>https://maven.aliyun.com/repository/central</url> </mirror> <!-- maven官方镜像 --> <mirror> <id>mirrorId</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name </name> <url>https://repo1.maven.org/maven2/</url> </mirror> <!-- 阿里云镜像1 --> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>https://central.maven.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror> <!-- 阿里云镜像2 --> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>https://maven.aliyun.com/nexus/content/repositories/central/</url> <mirrorOf>central</mirrorOf> </mirror>
设置完成以后,复制一份setting.xml文件,放置在和LocalWarehouse同级目录下。
以后我们使用资源的时候,首先去本地仓库找去,如果没有就去私服或者中央仓库去下载到本地仓库。
maven的构建命令以mvn
开头,后面添加功能参数,可以一次性执行多个命令,用空格分离,如果在IDE中可以直接点击右边的菜单就可以完成。
mvn compile
:编译
mvn clean
:清理
mvn test
:测试
mvn package
:打包
mvn install
:安装到本地仓库
但是每次新建项目的时候,都会还原到初始的配置,导致重新下载依赖,解决的方法如下:
依赖配置:pom.xml
<?xml version="1.0" encoding="UTF-8"?> <!--头文件,无需修改--> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <!-- 指定了当前POM模型的版本,对于Maven2及Maven3来说,它只能是4.0.0;--> <modelVersion>4.0.0</modelVersion> <packaging>war</packaging> <!--本项目对应的坐标,如果把这段代码的拷贝到别的项目的pom.xml的dependency中,则这个项目中的依赖就会传递给目标项目,这就是依赖传递--> <name>maven04</name> <groupId>org.lvmanba</groupId> <artifactId>maven04</artifactId> <version>1.0-SNAPSHOT</version> <!-- 插件:构建项目所需要的信息--> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <goals> <goal>jar</goal> </goals> <phase>generate-test-resources</phase> </execution> </executions> </plugin> </plugins> </build> <!--依赖:设置当前项目运行所需的jar,一个项目可以设置多个依赖,如果引入相同的包,后面的覆盖前面的--> <dependencies> <!-- 设置具体依赖--> <dependency> <!-- 依赖所属群组id--> <groupId>junit</groupId> <!-- 依赖所属项目id--> <artifactId>junit</artifactId> <!-- 版本号--> <version>4.12</version> <!-- scope限制该包的作用范围 1、compile:默认的scope,可以在生命周期中使用。 2、provided:scope 只能作用在编译和测试时,同时没有传递性;使用这个时,不会将包打入本项目中,只是依赖过来。 3、runtime:表示dependency不作用在编译时,但会作用在运行和测试时。 4、test:表示dependency作用在测试时,不作用在运行时。 5、system:跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。 6、import:它只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置。 --> <scope>test</scope> <!-- 被继承以后是否显示,相当于私有--> <optional>true</optional> </dependency> </dependencies> </project>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。