Apache Maven
是一款基于 Java 平台的项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。
简单来讲Maven就是一个构建工具,用来管理我们的项目和依赖(jar),这样我们能把更多的精力放在开发上。
当然除了学习Maven外后期还会接触Gradle等构建工具。(之前搞安卓的时候接触过Gradle)
Apache Maven官网:https://maven.apache.org/
Maven是专门用于管理和构建Java项目的工具,它的主要功能有:
提供了一套标准化的项目结构(所有IDE使用Maven构建的项目结构完全一样)
提供了一套标准化的构建流程(如 编译、测试、打包(jar包)、发布等)
提供了一套依赖管理机制(使用Maven坐标配置来管理各种依赖)
Maven Repository(Maven仓库)
Maven中有如下3种仓库:
本地仓库,自己电脑上的仓库(存jar包的位置)
私服仓库,速度比中央仓库要快,通常都是由一些公司、组织搭建的私有仓库,用于同步中央仓库上的文件。
中央仓库:在互联网中,由Apache团队维护,包含了基本所有的jar包,版权原因不包含Oracle的驱动包
中央仓库地址:https://mvnrepository.com
新版Maven的下载地址:https://maven.apache.org/download.cgi
通常比较新的东西不太稳定,接下来我们下载一个maven3.6.1Windows版。
Maven3.6.1下载地址:https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries
下载成功后,将Maven文件夹移动到你的工作目录并解压包即可。
Maven目录结构如下:
plexus-classworlds-xxx.jar
,这个文件它是一个类加载器框架,相对于默认的 java 类加载器,它提供了更丰富的语法以方便配置,Maven 使用该框架加载自己的类库。1、新建系统变量MAVEN_HOME
变量名 | 变量值 |
---|---|
MAVEN_HOME | D:\Program Files\Environment\apache-maven-3.6.1(Maven的安装目录/位置) |
2、在系统变量path中引用这个变量
变量名 | 变量值 |
---|---|
Path | %MAVEN_HOME%\bin |
3、在命令提示符窗口中输入mvn -version
mvn -version
出现上述结果,表示Maven已经安装成功啦。
当然Maven的卸载也很简单,将Maven的工作目录删除,然后删除它的环境变量即可。
1、在Maven的工作目录中创建一个maven_repo
文件夹,用来存放我们以后从中央仓库下载的jar包。
2、在conf/setting.xml
文件中配置一个
标签,并指向本地仓库位置。
<localRepository>D:\Program Files\Environment\apache-maven-3.6.1\maven_repolocalRepository>
配置之后,项目需要的依赖jar包如果本地仓库没有的话就需要去中央仓库下载,但是中央仓库在国外,速度会很慢,这时我们可以配置镜像服务器,只需要在conf/setting.xml
中添加镜像地址即可。
在conf/setting.xml文件的
标签中添加阿里云私服。
<mirror>
<id>alimavenid>
<mirrorOf>centralmirrorOf>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/repositories/central/url>
mirror>
maven3.6.1版本默认的jdk版本是1.5,就会导致项目的兼容性问题,所以需要配置成1.8。
在 conf/settings.xml
中的
标签内配置:
<profiles>
<profile>
<id>jdk-1.8id>
<activation>
<activeByDefault>trueactiveByDefault>
<jdk>1.8jdk>
activation>
<properties>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
properties>
profile>
profiles>
Maven常用命令:
编译(compile)
清理(clean)
打包(package)
测试 (test)
安装(install)
命令详解:
mvn compile # 编译项目的源代码(会class字节码文件放在target目标目录中)
mvn clean # 清除项目中target目录
maven package # 将编译后的代码打包,如jar、war或者ear文件
mvn test # 运行应用程序中的单元测试
mvn install # 将项目包安装到本地仓库,这样项目包就可以用作其他本地项目的依赖
注意:执行maven命令需要当前目录有pom文件,然后在cmd窗口执行命令。
Maven构建项目的生命周期描述的是一次构建过程经历经历了多少个事件。
Maven 对项目构建的生命周期划分为3套:
注意: 同一生命周期内,执行后面的命令,前边的所有命令都会自动执行。
例如 小张对maven项目进行打包操作,执行流程就是编译->测试->打包。
也就是同一生命周期内,执行后面的命令,前边的所有命令都会自动执行。
参考文章:https://blog.csdn.net/QZP51ZX/article/details/107522316
1、设置IntelliJ IDEA使用本地安装的Maven,并修改配置文件路径:
2、设置maven在不联网的情况下使用本地插件构建项目:
-DarchetypeCatalog=internal
然后重启IntelliJ IDEA即可!
1、Maven坐标是用来干什么的?
2、Maven坐标主要组成:
可以在IDEA安装一个MavenHelper,简化Maven的使用。
1、选择右侧Maven面板,点击+
号。
2、选中对应项目的pom.xml
文件,双击即可。
3、如果没有Maven面板,选择View → Appearance > Tool Window Bars
即可。
1、创建一个Maven-Web项目
2、向pom.xml中引入Tomcat插件,并刷新依赖
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.2version>
<configuration>
<port>8080port>
<path>/path>
configuration>
plugin>
plugins>
build>
3、启动Tomcat
控制台出现如下结果表示启动成功。
4、测试访问 http://127.0.0.1:8080
Maven 的配置:
<mirrors>
<mirror>
<id>nexus-aliyunid>
<mirrorOf>centralmirrorOf>
<name>Nexus aliyunname>
<url>http://maven.aliyun.com/nexus/content/groups/publicurl>
mirror>
mirrors>
<profiles>
<profile>
<id>jdk-1.8id>
<activation>
<activeByDefault>trueactiveByDefault>
<jdk>1.8jdk>
activation>
<properties>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
properties>
profile>
profiles>
1、 创建一个普通Maven项目
2、向 pom.xml 文件中引入依赖
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.3.4.RELEASEversion>
parent>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
dependencies>
ok已经成功将依赖导入到项目中!
3、创建一个入口程序,用于启动SpringBoot应用程序
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* SpringBoot启动类
*/
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
4、编写业务
package com.baidou.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "你好 SpringBoot!!!";
}
}
5、测试运行
执行启动类中的main方法便可以运行这个springboot应用:
ok项目已经启动成功啦!
测试访问:http://localhost:8080/hello
6、简化配置,在resources目录中创建一个application.properties
文件
# 修改tomcat服务器的端口号
server.port=8089
重新启动项目,并测试 http://localhost:8089/hello
7、简化部署
向pom.xml引入打包插件,这样就可以将项目打成jar包,然后部署到服务器上啦。
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
点击右侧的maven->Lifecycle->package
:(maven打包操作)
然后target目标目录中便会自动生成该项目的jar包;
运行jar文件:java -jar xxx.jar
。
Maven中央仓库:https://mvnrepository.com
1、在pom.xml中编写
标签。
2、在
标签中使用
引入坐标。
3、定义坐标的groupld
,artifactld
,version
。
4、点击刷新按钮,使坐标生效。
依赖范围(scope)指的是该jar包在哪个阶段时才会有效,只要在对应的依赖坐标里配置
标签,便可以控制依赖的作用范围。也就是设置对应jar包的作用范围:编译环境、测试环境、运行环境。(不写的话默认值是compile )
依赖范围指的是坐标的依赖范围,
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13version>
<scope>testscope>
dependency>
依赖范围 | 编译有效 | 测试有效 | 运行时有效 | 打包有效 | 例子 |
---|---|---|---|---|---|
compile | √ | √ | √ | √ | spring-core |
test | x | √ | x | x | junit |
provided | √ | √ | x | x | servlet-api |
runtime | x | √ | √ | √ | JDBC驱动 |
system | √ | √ | x | x | 本地maven仓库 之外的类库 |
参考文章:https://blog.csdn.net/lovequanquqn/article/details/81627807