这篇文章主要讲解了“Maven安装与环境变量配置教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Maven安装与环境变量配置教程”吧!
目录
一、Maven简介
1. 什么是Maven
2. Maven的作用
3. 坐标的概念
小结
二、Maven安装配置【操作】
1. Maven的仓库类型
2. 下载与目录结构
3. Maven安装配置
小结
三、Maven项目的目录结构
四、Maven构建项目
五、Maven管理依赖和插件
Maven的依赖管理
2. 在idea创建Maven项目
2.2 创建Maven的web项目
1.选择项目的骨架
2.设置项目的坐标
3. 引入依赖
4. 依赖范围
小结
Maven的插件
六、Maven的私服
搭建私服
讲解
搭建Maven私服
1. 下载nexus
2. 安装nexus
3. 启动nexus
4. 登录nexus
nexus的仓库类型介绍
小结
使用私服
小结
上传jar到本地仓库和私服
目标
把第三方jar打包到本地仓库
把第三方jar打包发布到私服
参数说明
七、Lombok
1. Lombok介绍与配置
什么是Lombok
Lombok的作用
Lombok的配置
2. Lombok的常用注解
附:添加依赖出错怎么办
总结
一、Maven简介
1. 什么是Maven
Maven:是Apache提供的免费开源的项目管理工具。它提供了一个项目对象模型(pom.xml)、一个依赖管理系统(根据坐标,帮我们引入依赖)、一套项目生命周期(帮我们方便的进行项目构建)、一组标准集合(Maven工程的目录结构规范,坐标规范)、和一个插件管理系统(提供了进行项目构建的命令)。
2. Maven的作用
3. 坐标的概念
小结
二、Maven安装配置【操作】
1. Maven的仓库类型
1.本地仓库:本地缓存jar包的文件夹
本地仓库默认在:C:\Users\电脑的用户名\.m2\repository
通常会修改配置文件,修改本地仓库的路径
2.远程仓库(私服):一些企业、组织、社区搭建的仓库服务
通常企业里人自己搭建私服。私服里的jar包大多数还是来自于中央仓库
有些是企业内部自己搭建、自己使用的
有些是企业搭建面向整个互联网的,比如:阿里私服
3.中央仓库
是Maven官方团队维护的仓库,里边有最全的jar包。
但是没有授权的jar包,中央仓库里没有,比如:Oracle驱动包
地址:https://repo1.maven.org/maven2
2. 下载与目录结构
maven
|--bin Maven的可执行命令文件夹
|--boot Maven的引导程序(类加载器)
|--conf 配置文件夹
|--lib Maven的核心程序代码
3. Maven安装配置
3.1 安装Maven
1.Maven是免安装的,直接解压
注意:解压路径里,不要有中文、空格、特殊字符
2.注意检查JDK环境变量是否正确
Maven软件是Java语言编写的
3.配置Maven环境变量:
增加MAVEN_HOME=Maven的解压目录
修改Path中添加 %MAVEN_HOME%\bin


1.验证Maven配置
打开cmd,输入命令:mvn -version

3.2 配置Maven仓库
配置步骤:
新建一个目录,例如 :repository,目录里不能有中文、空格、特殊字符
比如我的路径为:D:\develop_software\maven\repository
修改Maven的conf\settings.xml配置文件

扩展:
修改settings.xml里,设置Maven编译的版本jdk1.8。在<profiles>里边增加:
<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_HOME, 值就是maven软件的解压目录
修改Path,值里新增%MAVEN_HOME%\bin
配置本地仓库:
三、Maven项目的目录结构
一个项目要想使用Maven进行管理,那么这个项目的目录结构就必须要符合Maven的要求:
maven项目
|--pom.xml 项目对象模型文件,一个Maven项目必定有pom.xml文件
|--src
|--main 项目的主体程序代码目录
| |--java 项目的Java程序代码放在这文件夹里
| |--resources 项目的配置文件放在这里
| |--webapp 项目的web资源放在这里,html,css,js,jsp,音频,图片,视频等等
| |--WEB-INF
| |--其它web资源
|--test 项目的单元测试代码目录
|--java 项目的单元测试代码
|--resources 项目单元测试需要的配置文件
小结
src\main\java
:放主体程序代码的java文件
src\main\resources
:放主体程序代码的配置文件
src\main\webapp
:放主体程序代码的web资源:html、css、js、jsp等等
四、Maven构建项目
1. 项目构建的生命周期
Maven命令执行的规律:
clean: clean
compile: compile
test: compile=>test
package: compile=>test=>package
install: compile=>test=>package=>install
人的生命周期:婴儿=>儿童=>少年=>青年=>中年=>老年
Maven有三套生命周期
清理生命周期:CleanLifeCycle
有常用命令:clean
默认生命周期(构建生命周期):DefaultLifeCycle
有常用命令:compile->test->package->install->deploy
站点生命周期:SiteLifeCycle
有常用命令:site
。生成Maven项目的描述信息文档
小结
常用命令:
mvn clean
:清理。删除掉target目录
mvn compile
:编译。把主体程序代码进行编译,放到target目录里
mvn test
:测试。编译并执行单元测试代码
mvn package
:打包。Java项目打成jar包,web项目打包war包
mvn install
:安装。把程序包安装到本地仓库,安装位置是坐标对应的文件夹
Maven的生命周期
清理生命周期CleanLifeCycle:clean
默认生命周期/构建生命周期DefaultLifeCycle:compile=>test=>package=>install=>deploy
站点生命周期SiteLifeCycle:site
生命周期的作用:只要执行一个目标命令,Maven会从生命周期里第一个阶段开始,执行到目标命令为止
五、Maven管理依赖和插件
Maven的依赖管理
把Maven配置到idea中
在idea里创建Maven的java项目
在idea里创建Maven的web项目
Maven项目中,引入依赖的方法
Maven的依赖范围配置,解决jar包冲突
1. 在idea配置Maven(操作)


2. 在idea创建Maven项目
2.1 创建Maven的java项目
1.创建Module,选择Maven类型,选择骨架org.apache.maven.archetypes:maven-archetype-quickstart

2.设置项目的坐标

3.再继续步骤,跟以前的一样:设置module的名称和位置
注意:不要和已有的其它module重名或者重位置

4.创建后,如果弹窗Maven projects need to be imported
,就选择 启动自动导入。
作用是:如果pom.xml文件有变更,Maven会自动读取,立即生效;否则就要手动导入

5.如果文件夹缺失,就创建补全,然后刷新

2.2 创建Maven的web项目
1.选择项目的骨架

2.设置项目的坐标
如果上边Add as module to
和Parent
是有配置的,那么要在右边全部选择none


3. 引入依赖
如果项目中需要使用jar包,只需要把jar包的坐标配置到项目的pom.xml中即可。在pom.xml的<dependencies>
标签里增加以下内容:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>依赖范围</scope>
</dependency>
可以在pom.xml里,输入dep
,会自动补充坐标模板,我们填充坐标值即可
可以使用 alt+insert
,会弹出依赖导入的界面,可以从本地仓库里搜索依赖
如果不知道依赖的坐标,可以从中央仓库搜索坐标:https://mvnrepository.com/
4. 依赖范围
如果项目中引入的jar包过多,可能会出现jar包冲突,我们可能设置jar包不同的依赖范围来处理jar包冲突。
Maven的依赖范围有:
compile
:默认的依赖范围,全范围有效。
test
:单元测试有效。src/test里有效,src/main里无效
provided
:编译时有效,运行时使用其它地方提供的jar包。
runtime
:运行时有效,编译时无效。比如:数据库驱动包
system
:引入仓库之外的本地jar包。少用

实际开发中特殊的jar包
小结
依赖范围:
compile:默认的。编译时有效,运行时有效,单元测试有效
test:单元测试有效(src\main\test)里有效
provided:编译时有效,运行时无效(备胎包)
runtime:编译时无效,运行时有效
system:引用仓库之外的本地jar包,少用
Maven的插件
jdk编译版本插件
<!--jdk编译插件-->
<plugins>
<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>
tomcat7插件
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!-- 指定端口 -->
<port>82</port>
<!-- 项目路径 -->
<path>/</path>
</configuration>
</plugin>
</plugins>
六、Maven的私服
搭建私服
讲解
什么是Maven的私服
公司在自己的局域网内搭建自己的远程仓库服务器,称为私服
私服服务器即是公司内部的 maven 远程仓库, 每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。
私服还充当一个代理服务器,当私服上没有 jar 包会从互联网中央仓库自动下载,如下图 :

搭建Maven私服
1. 下载nexus

2. 安装nexus
1.解压nexus-2.12.0-01-bundle.zip。注意:解压路径里不要有中文、空格、特殊字符
2.以管理员方式打开cmd,切换进入解压目录的bin文件夹里,运行命令:nexus.bat install
把nexus安装成为Windows的服务

3. 启动nexus
4. 登录nexus
打开浏览器,输入地址:http://localhost:8081/nexus

登录“Log in”,输入帐号和密码进行登录(帐号admin,密码admin123)

nexus的仓库类型介绍

hosted
:宿主仓库, 部署自己的 jar 到这个类型的仓库,包括 releases 和 snapshot 两部分, Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
proxy
:代理仓库, 用于代理远程的公共仓库,如 maven 中央仓库,用户连接私服,私服自动去中央仓库下载 jar 包或者插件。
group
:仓库组,用来合并多个 hosted/proxy 仓库,通常我们配置自己的 maven 连接仓库组。
virtual
:虚拟仓库,兼容 Maven1 版本的 jar 或者插件
小结
使用私服
把项目发布到私服
使用场景
企业中多个团队协作开发通常会将一些公用的组件、开发模块等发布到私服供其它团队或模块开发人员使用。
本例子假设多团队分别开发。某个团队开发完在common_utils, 将 common_utils发布到私服供其它团队使用
配置
第一步:在用户自己的Maven软件里修改conf/settings.xml
:
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
第二步:在用户需要发布的私服的项目pom.xml里,配置私服仓库的地址。
<distributionManagement>
<repository>
<!-- 注意:id的值,是刚刚在settings.xml中配置的server的id -->
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<!-- 注意:id的值,是刚刚在settings.xml中配置的server的id -->
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
测试
1.启动nexus服务(如果已启动,就不需要做这一步)
2.在项目里执行Maven的deploy命令:
根据本项目pom.xml中version定义决定发布到哪个仓库
如果version定义为xx-snapshot,项目将发布到 nexus 的 snapshot仓库
如果version定义为xx-release,项目将发布到 nexus的 release 仓库
从私服下载jar包
使用场景
好处是:
由私服对公司项目的依赖 jar 包统一管理
可以提高下载速度, 项目连接私服下载 jar 包的速度,要比项目连接中央仓库的速度快的多。
配置
第一步:在settings.xml
的profiles
标签下配置:
注:由于settings.xml
中没有repositories
标签,所以要使用profile
标签来配置仓库
<profile>
<!--profile 的 id-->
<id>dev</id>
<repositories>
<repository>
<!--仓库 id, repositories 可以配置多个仓库,保证 id 不重复-->
<id>nexus</id>
<!--仓库地址,即 nexus 仓库组的地址-->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下载 releases 构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载 snapshots 构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库, maven 的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的 id 不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
第二步:激活profile
定义的仓库
激活后,配置的仓库才会生效
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
测试 创建Maven应用testdownload
,配置依赖
<dependency>
<groupId>com.baidu</groupId>
<artifactId>commons-utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
编译项目,查看日志会出现:

查看本地仓库里,会有从私服下载的jar包
小结
把项目发布到私服:
在Maven的settings.xml里,配置仓库的帐号和密码
在Maven项目的pom.xml里,配置仓库的地址
执行Maven命令:mvn deploy
从私服里下载jar:
在settings.xml里配置仓库地址
在settings.xml里激活仓库的配置
在Maven项目里,配置依赖
如果这个依赖,在本地仓库里没有,Maven就会从私服里下载到本地仓库,再引入到Maven项目里
上传jar到本地仓库和私服
目标
把第三方jar打包到本地仓库
把jar打包发布到私服
把第三方jar打包到本地仓库
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile=fastjson-1.1.37.jar -Dpackaging=jar


把第三方jar打包发布到私服
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=fastjson-1.1.37.jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty


参数说明
DgroupId
和DartifactId
构成了 jar 包的坐标,项目就是依靠这两个属性定位。可以自己起名
Dfile
表示需要上传的 jar 包的位置。
Durl
私服上仓库的位置,打开 nexus——>repositories 菜单,可以看到该路径。
DrepositoryId
服务器的表示 id,在 nexus 的 configuration 可以看到。
Dversion
表示版本信息。
上传成功后,在 nexus 界面点击 3rd party 仓库可以看到这包。
七、Lombok
1. Lombok介绍与配置
什么是Lombok
Lombok的作用
Lombok的配置
什么是Lombok
Lombok的作用
通过添加注解的方式,帮我们生成一些方法,提高开发人员的开发效率。
例如:
开发中经常需要写的javabean,要添加相应的getter/setter,也许还要去写构造器、equals等方法
当属性多时,会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量
使用Lombok,可以帮我们生成这些方法,我们就不用自己编写了
Lombok的配置
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
安装插件

编译时出错,可能是没有enable注解处理器。Annotation Processors > Enable annotation processing。设置完成之后程序正常运行。

2. Lombok的常用注解
目标
@Data
@Getter/@Setter
@ToString
@NoArgsConstructor, @AllArgsConstructor
@Data
@Data
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
@Getter/@Setter
public class User implements Serializable{
@Setter
@Getter
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
@ToString
@ToString(exclude = {"id"})
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
@xxxConstructor
@NoArgsConstructor: 无参构造器
@NoArgsConstructor
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
@AllArgsConstructor
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
附:添加依赖出错怎么办
现象:
原因:
解决:
第一步:配置阿里云的仓库镜像
打开Maven软件里conf/settings.xml
在<mirrors>
标签中添加如下内容:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
第二步:删除本地仓库里的缓存文件
1.在本地仓库文件夹里搜索*.lastUpdated

2.把搜索到的所有文件全部删除

第三步:重新添加依赖
感谢各位的阅读,以上就是“Maven安装与环境变量配置教程”的内容了,经过本文的学习后,相信大家对Maven安装与环境变量配置教程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!