Maven
第一章-Maven相关的概念1.什么是MavenMaven是项目进行模型抽象,充分运用的面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。Maven是由Apache开发的一个软
第一章-Maven相关的概念
1.什么是Maven
Maven是项目进行模型抽象,充分运用的面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。
Maven是由Apache开发的一个软件项目管理工具。
2.Maven的作用
-
依赖管理: maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手动从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。
-
项目构建: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。
-
maven对工程分模块构建,提高开发效率。
Maven仓库和坐标
1.Maven的仓库【存放jar包的位置】
仓库名称 | 作用 |
---|---|
本地仓库 | 本地仓库:本地电脑存放jar包的位置 相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。 |
中央仓库 | Maven官方提供的jar包存放的位置 仓库中jar由专业团队(maven团队)统一维护。中央仓库的地址:http://repo1.maven.org/maven2/ |
远程仓库 | 在公司内部架设一台服务器,配置一个Maven仓库,一般不对外公开。(阿里云 私服 对外公开) |
2. Maven的坐标
Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。为了能自动化的解析任何一个Java构件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。坐标的定义元素如下:
坐标:jar包的唯一标识,方便从Maven仓库中找到项目要使用的jar包 GAV。
- groupId:项目组织唯一的标识符,实际对应JAVA的包的结构 (一般写公司的组织名称 eg:com.alibaba)
- artifactId: 项目的名称
- version:定义项目的当前版本
例如:要引入fastjson,只需要在pom.xml配置文件中配置引入fastjson的坐标即可:
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.39</version>
</dependency>
jar包的坐标可以去Maven仓库官网https://mvnrepository.com/查询,项目开发时一般都会直接提供整套坐标。
小结
- Maven仓库:存放jar包的地方
- 类型:
- 本地仓库【本地电脑存放jar包的位置】
- 远程仓库【公司局域网中搭建的一台服务器,配置了Maven仓库】
- 中央仓库【Maven官方提供的】
- 工作流程
- 当项目需要使用jar,在pom.xml中添加坐标,通过坐标进行引入,当发现本地仓库中存在该jar包,就直接获取使用,如果本地不存在,此时会联网去【远程仓库、中央仓库】下载jar包添加到项目中,并且存放在本地仓库一份,这样下次再使用同样的jar包时,就不需要去互联网下载了。
- 类型:
- Maven坐标:jar包的唯一标识 GAV
- groupId:jar包所属的公司组织名称 eg:com.alibaba
- artifactId:项目名称 eg:fastjson
- version:jar包的版本 eg:1.2.39
第二章-Maven的安装
1.下载Maven
http://maven.apache.org/
2. 安装Maven
将Maven压缩包解压,即安装完毕(解压到一个没有中文和空格的目录)
3. Maven目录介绍
bin 命令
boot 第三方类加载框架
conf 配置
lib maven自身jar包
4. 配置环境变量
-
进入环境变量
-
配置MAVEN_HOME和Path
5. 配置本地仓库
将软件文件夹中的Repository解压
配置本地仓库
在maven的安装目录中conf/ settings.xml文件,在这里配置本地仓库
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:/Maven/repository</localRepository>
配置远程仓库
在maven的安装目录中conf/ settings.xml文件,在这里配置远程仓库
将如下内容放入settings.xml中的mirrors标签内部即可
<!--阿里巴巴远程仓库镜像配置 新版-->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
测试Maven安装成功
打开cmd本地控制台,输入mvn -v有提示信息则安装成功
小结
-
注意事项
-
Maven安装包
和仓库
都需要解压到一个没有中文和空格的目录下(建议解压到不同的目录) -
环境变量配置
-
MAVEN_HOME 配置到Maven的解压目录 bin目录的上一级 eg:D:\apache-maven-3.5.3
-
Path 配置到bin目录 eg:%MAVEN_HOME%\bin
-
-
在
apache-maven-3.5.3\conf\settings.xml
配置本地仓库和远程仓库<localRepository>D:/Maven/repository</localRepository>
-
IDEA集成Maven
1.配置Maven
- 配置Maven
settings------>build,execution,deployment------->maven
设置最后三个
maven home directory: maven的home目录
user settings file: maven的配置文件
local repository: 本地仓库
- 配置参数(创建工程不需要联网,解决创建慢的问题)
maven-------->runner---------> VM options: -DarchetypeCatalog=internal
2. 配置默认Maven环境
每次创建Maven工程的时候,总是需要重新选择Maven配置信息,那是因为默认的Maven环境不是我们当前的maven环境,所以需要配置。配置流程如下图:
-
选择默认的配置 file------>new Projects Settings --> Settings for new project
-
进入配置,配置maven
-
配置参数(创建工程不需要联网,解决创建慢的问题) -DarchetypeCatalog=internal
-
重启IDEA, 就可以生效了
小结
-
idea集成Maven
1.配置当前项目Maven环境:
file-settings-maven 配置三项(Maven Home目录、maven配置文件、maven本地仓库地址)
配置参数:Maven–Runner下面 -DarchetypeCatalog=internal 解决创建工程联网慢的问题
2.配置新项目Maven环境【默认】:为了创建新项目时不需要再次配置Maven环境
file->new Projects settings -> Settings for new projects–>maven --> …
第三章-Maven的常用命令【重点】
Maven的常用命令
1.clean命令
清除编译产生的target文件夹内容,作用:防止代码更新之后没有重新编译!
可以配合相应命令一起使用,如mvn clean package, mvn clean test
2. compile命令
该命令可以对src/main/java目录的下的代码进行编译
3. test命令
测试命令,或执行src/test/java/下所有junit的测试用例
-
在src/test/java下创建测试类DemoTest
-
执行test命令测试
-
控制台显示测试结果
4. package命令
mvn package,打包项目
- 如果是JavaSe的项目,打包成jar包 方便其他的项目引用
- 如果是JavaWeb的项目,打包成war包 方便部署
打包后的项目会在target目录下找到
5. install命令
mvn install,打包后将其安装在本地仓库 方便在其他项目中通过坐标引入jar包使用
注意:
1. 因为通过pom.xml文件添加坐标引入的是jar包,所以打包安装到本地仓库的项目一定是javase工程
2. 打包安装到本地仓库,方便在其他项目中通过pom添加依赖引用
安装完毕后,在本地仓库中可以找到javase_demo的信息
项目生命周期:compile–>test–>package–>install
项目构建:
clean:清理缓存(清理编译后的target文件夹下的内容)
compile:编译 ,对项目重新编译 编译java源代码
test:测试所有junit用例
package:项目打包 javase项目打jar包 javaweb项目打war包
install:将打包后的项目安装到本地仓库 方便maven通过坐标引入到其他项目中使用
compile --> test -->package -->install
小结
-
Maven命令
- clean:清理target目录下的内容,清理缓存
- compile:重新编译
- test:执行所有的src/test/java下的单元测试
- package:打包 javase打jar包 javaweb打war包
- install:将javase项目打成jar包安装到本地仓库 方便其他项目通过添加坐标引用
-
maven生命周期
- 当执行了install命令时,会执行编译、测试、打包
- compile --> test --> package --> install
第四章-依赖管理和插件【使用】
1导入依赖
导入依赖坐标,无需手动导入jar包就可以引入jar。在pom.xml中使用标签引入依赖。
做项目/工作里面 都有整套的依赖的
去Maven仓库官网http://mvnrepository.com/
查找, 复制,粘贴.
导入junit的依赖
- 导入junit坐标依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
- 进行单元测试
import org.junit.Test;
public class DemoTest {
@Test
public void test1(){
System.out.println("test running...");
}
}
导入servlet的依赖
- 导入Servlet的坐标依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
3.2 依赖范围
依赖范围指的就是jar包的被需要程度,项目可以简单分为三个阶段(编译时、测试时、运行时)
compile范围最广:默认就是compile,表示该jar包无论在测试时还是运行时都需要,必不可少
test:表示该jar包只需要出现在单元测试中,用于测试,而代码真正运行不需要。 eg:jUnit
provided:表示内部提供,一般在编译时和测试时需要,运行时不需要。eg:servlet-api
runtime:测试时和运行时会用到,编译时不会。eg:数据库驱动
-
compile 编译、测试、运行,A在编译时依赖B,并且在测试和运行时也依赖
例如:strus-core、spring-beans, C3P0,Druid。打到war包或jar包
-
provided 编译、和测试有效,A在编译和测试时需要B
例如:servlet-api就是编译和测试有用,在运行时不用(tomcat容器已提供)
不会打到war
-
runtime:测试运行有效,
例如:jdbc驱动包 ,在开发代码中针对java的jdbc接口开发,编译不用
在运行和测试时需要通过jdbc驱动包(mysql驱动)连接数据库,需要的
会打到war
-
test:只是测试有效,只在单元测试类中用
例如:junit
不会打到war
-
按照依赖强度,由强到弱来排序:(理解)
compile> provided> runtime> test
小结
- 导入依赖:
- 正常的开发,项目中,都会有成套的坐标提供,复制粘贴就行
2. 单个的使用,可以去Maven仓库官网搜索 复制粘贴坐标使用 - 依赖范围:
- compile:默认,表示该jar包在编译、测试、运行时都需要 eg:fastjson
- test:表示该jar包只在测试时使用 eg:junit
- provided:表示该jar包在编译和测试时需要使用,运行时不需要 eg:servlet-api
- 使用junit时建议加上依赖范围test 使用servlet时建议加上依赖范围provided,如果不添加,项目在打包时会将servlet jar添加到项目中,会和tomcat提供的servlet jar包产生冲突
Maven插件
1.目标
Maven的依赖管理【管理jar包】,进行项目构建【使用Maven命令可以清理、编译、测试、打包 运行项目】
Maven是一个核心引擎,提供了基本的项目处理能力和建设过程的管理,以及一系列的插件是用来执行实际建设任务。maven插件可以完成一些特定的功能。例如,**集成jdk插件可以方便的修改项目的编译环境;集成tomcat插件后,无需安装tomcat服务器就可以运行tomcat进行项目的发布与测试。**在pom.xml中通过plugin标签引入maven的功能插件。
2.路径
- JDK编译版本的插件
- Tomcat的插件
JDK编译版本的插件【了解】
-
方式一:
<!--设置Maven工程的JDK编译版本--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
-
方式二:
<!--项目构建及插件配置-->
<build>
<plugins>
<!--jdk编译插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
Tomcat7服务端的插件
- 添加tomcat7插件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!-- 指定端口 -->
<port>82</port>
<!-- 配置项目虚拟目录 -->
<path>/</path>
</configuration>
</plugin>
注意: Maven的中央仓库中只有Tomcat7.X版本的插件,而之前我们使用的是8.X的版本,如果想使Tomcat8.X的插件可以去其他第三方仓库进行寻找,或者使用IDEA集成外部Tomcat8极其以上版本,进行项目的发布。
更多推荐
所有评论(0)