您好,登录后才能下订单哦!
这篇文章主要讲解了“Maven安装与环境变量配置教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Maven安装与环境变量配置教程”吧!
一、Maven简介
1. 什么是Maven
2. Maven的作用
3. 坐标的概念
小结
二、Maven安装配置【操作】
1. Maven的仓库类型
2. 下载与目录结构
3. Maven安装配置
3.1 安装Maven
3.2 配置Maven仓库
小结
三、Maven项目的目录结构
小结
四、Maven构建项目
1. 项目构建的生命周期
小结
五、Maven管理依赖和插件
Maven的依赖管理
1. 在idea配置Maven(操作)
2. 在idea创建Maven项目
2.1 创建Maven的java项目
2.2 创建Maven的web项目
1.选择项目的骨架
2.设置项目的坐标
3. 引入依赖
4. 依赖范围
小结
jdk编译版本插件
tomcat7插件
Maven的插件
六、Maven的私服
搭建私服
讲解
什么是Maven的私服
搭建Maven私服
1. 下载nexus
2. 安装nexus
3. 启动nexus
4. 登录nexus
nexus的仓库类型介绍
小结
使用私服
把项目发布到私服
从私服下载jar包
小结
上传jar到本地仓库和私服
目标
把第三方jar打包到本地仓库
把第三方jar打包发布到私服
参数说明
七、Lombok
1. Lombok介绍与配置
什么是Lombok
Lombok的作用
Lombok的配置
2. Lombok的常用注解
附:添加依赖出错怎么办
现象:
原因:
解决:
总结
Maven:是Apache提供的免费开源的项目管理工具。它提供了一个项目对象模型(pom.xml)、一个依赖管理系统(根据坐标,帮我们引入依赖)、一套项目生命周期(帮我们方便的进行项目构建)、一组标准集合(Maven工程的目录结构规范,坐标规范)、和一个插件管理系统(提供了进行项目构建的命令)。
项目构建:一个项目开发之后,经历的编译、测试、打包、安装、部署等等一系列的过程,叫项目构建
主要是测试、运维/实施人员使用的
依赖管理:Maven可以帮我们管理jar包,可以轻松的解决依赖的冲突问题
依赖:通常指jar包,不仅仅是jar包
模块化创建项目
坐标:被Maven管理的每个项目,都必须有自己的唯一标识,这个唯一标识叫坐标坐
标的组成:由三部分组成
groupId:公司名、组织名 域名倒写。比如:c3p0
, com.jd
artifactId:项目名、包名。比如:c3p0
version:版本号。比如:0.9.1.2
, 1.0-SNAPSHOT
, 5.2.0-RELEASE
什么是Maven:是Apache提供的一个开源免费的项目管理工具
Maven的作用:
项目构建:编译、测试、打包、安装、部署等等一系列的过程,叫项目构建
依赖管理:帮我们管理jar包依赖
模块化创建项目
坐标的概念:
groupId:企业名/组织名 域名倒写
artifactId:包名/项目名
version:版本号
被Maven管理的每个项目/jar包,其唯一标识叫坐标
由三部分组成:
1.本地仓库:本地缓存jar包的文件夹
本地仓库默认在:C:\Users\电脑的用户名\.m2\repository
通常会修改配置文件,修改本地仓库的路径
2.远程仓库(私服):一些企业、组织、社区搭建的仓库服务
通常企业里人自己搭建私服。私服里的jar包大多数还是来自于中央仓库
有些是企业内部自己搭建、自己使用的
有些是企业搭建面向整个互联网的,比如:阿里私服
3.中央仓库
是Maven官方团队维护的仓库,里边有最全的jar包。
但是没有授权的jar包,中央仓库里没有,比如:Oracle驱动包
地址:https://repo1.maven.org/maven2
下载地址:http://maven.apache.org
Maven的目录结构:
maven |--bin Maven的可执行命令文件夹 |--boot Maven的引导程序(类加载器) |--conf 配置文件夹 |--lib Maven的核心程序代码
1.Maven是免安装的,直接解压
注意:解压路径里,不要有中文、空格、特殊字符
2.注意检查JDK环境变量是否正确
Maven软件是Java语言编写的
3.配置Maven环境变量:
增加MAVEN_HOME=Maven的解压目录
修改Path中添加 %MAVEN_HOME%\bin
1.验证Maven配置
打开cmd,输入命令:mvn -version
配置步骤:
新建一个目录,例如 :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>
仓库类型
本地仓库:自己电脑上缓存jar包的文件夹
远程仓库(私服):一些企业、社区、组织自己搭建的仓库服务
中央仓库:Maven官方团队维护仓库服务
maven的安装:
解压。注意:解压的目录里不要有中文、空格、特殊字符
配置环境变量:
新增MAVEN_HOME, 值就是maven软件的解压目录
修改Path,值里新增%MAVEN_HOME%\bin
配置本地仓库:
创建repository目录里不要有中文、空格 、特殊字符
修改Maven的conf\settings.xml,增加本地仓库的配置:<localRepository>标签
一个项目要想使用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命令执行的规律:
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项目的描述信息文档
如果执行了一个目标命令: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配置到idea中
在idea里创建Maven的java项目
在idea里创建Maven的web项目
Maven项目中,引入依赖的方法
Maven的依赖范围配置,解决jar包冲突
配置Maven
增加运行的配置项:-DarchetypeCatalog=internal
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.如果文件夹缺失,就创建补全,然后刷新
如果上边Add as module to
和Parent
是有配置的,那么要在右边全部选择none
如果项目中需要使用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/
如果项目中引入的jar包过多,可能会出现jar包冲突,我们可能设置jar包不同的依赖范围来处理jar包冲突。
Maven的依赖范围有:
compile
:默认的依赖范围,全范围有效。
test
:单元测试有效。src/test里有效,src/main里无效
provided
:编译时有效,运行时使用其它地方提供的jar包。
runtime
:运行时有效,编译时无效。比如:数据库驱动包
system
:引入仓库之外的本地jar包。少用
实际开发中特殊的jar包
Junit
:依赖范围通常设置为test
servlet-api, jsp-api
:依赖范围通常设置为provided
数据库驱动包
:依赖范围可以是默认的,也可以是runtime
其它包,绝大多数都是默认依赖范围compile
依赖范围:
compile:默认的。编译时有效,运行时有效,单元测试有效
test:单元测试有效(src\main\test)里有效
单元测试Junit的包
provided:编译时有效,运行时无效(备胎包)
servlet-api,jsp-api
runtime:编译时无效,运行时有效
数据库驱动包
system:引用仓库之外的本地jar包,少用
maven插件可以完成一些特定的功能。例如,集成jdk插件可以方便的修改项目的编译环境;集成tomcat插件后,无需安装tomcat服务器就可以运行tomcat进行项目的发布与测试。
在pom.xml的plugins
标签中,通过plugin
标签引入maven的功能插件。
把<plugins>
标签,放在pom.xml的<build>
标签内部
<!--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>
把<plugins>
标签,放在pom.xml的<build>
标签内部
<plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <!-- 指定端口 --> <port>82</port> <!-- 项目路径 --> <path>/</path> </configuration> </plugin> </plugins>
了解私服的概念
搭建私服
公司在自己的局域网内搭建自己的远程仓库服务器,称为私服
私服服务器即是公司内部的 maven 远程仓库, 每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。
私服还充当一个代理服务器,当私服上没有 jar 包会从互联网中央仓库自动下载,如下图 :
Nexus 是 Maven 仓库管理器, 通过 nexus 可以搭建 maven 仓库,同时 nexus 还提供强大的仓库管理功能,构件搜索功能等。
下载地址: http://www.sonatype.org/nexus/archived/ ,下载: nexus-2.12.0-01-bundle.zip
1.解压nexus-2.12.0-01-bundle.zip。注意:解压路径里不要有中文、空格、特殊字符
2.以管理员方式打开cmd,切换进入解压目录的bin文件夹里,运行命令:nexus.bat install
把nexus安装成为Windows的服务
启动nexus服务:以管理员方式打开cmd,输入命令:net start nexus(第一次启动比较慢)
如果把nexus服务设置为开机自启动,以后就不需要再手动启动nexus服务了
但是通常是nexus服务器上设置。我们自己电脑上,没有必要设置开机自启动
关闭nexus服务:以管理员方式打开cmd,输入命令:net stop nexus
打开浏览器,输入地址:http://localhost:8081/nexus
可以打开nexus的conf/nexus.properties
文件,修改端口号,重启nexus服务后生效
登录“Log in”,输入帐号和密码进行登录(帐号admin,密码admin123)
hosted
:宿主仓库, 部署自己的 jar 到这个类型的仓库,包括 releases 和 snapshot 两部分, Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
proxy
:代理仓库, 用于代理远程的公共仓库,如 maven 中央仓库,用户连接私服,私服自动去中央仓库下载 jar 包或者插件。
group
:仓库组,用来合并多个 hosted/proxy 仓库,通常我们配置自己的 maven 连接仓库组。
virtual
:虚拟仓库,兼容 Maven1 版本的 jar 或者插件
hosted:宿主仓库。nexus私服本身的仓库
proxy:代理仓库。私服所代理的仓库
group:仓库组。针对于使用者,只要配置一个仓库组的地址,就可以引用组里定义的所有子库
virtual:虚拟仓库
把项目发布到私服
从私服下载jar包
使用场景
企业中多个团队协作开发通常会将一些公用的组件、开发模块等发布到私服供其它团队或模块开发人员使用。
本例子假设多团队分别开发。某个团队开发完在common_utils, 将 common_utils发布到私服供其它团队使用
配置
第一步:在用户自己的Maven软件里修改conf/settings.xml
:
在servers
标签里,配置私服的帐号和密码
<server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server>
第二步:在用户需要发布的私服的项目pom.xml里,配置私服仓库的地址。
本公司的自己的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库
如果版本为 release 则上传到私服的 release 仓库,如果版本为snapshot 则上传到私服的 snapshot 仓库
把以下内容写到项目的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 仓库
使用场景
没有配置 nexus的时候,如果本地仓库没有,就会去中央仓库下载,下载速度不稳定
通常在企业中会在局域网内部署一台私服服务器。这样:
本地项目首先去本地仓库找 jar;
如果没有找到则连接私服从私服下载 jar 包;
如果私服没有 jar 包,私服同时作为代理服务器从中央仓库下载 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安装到本地仓库中,方便后续使用
cmd
命令示例:
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile=fastjson-1.1.37.jar -Dpackaging=jar
查看本地仓库,验证是否安装成功
第一步:在settings.xml
中配置私服的server信息
<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
Lombok的作用
Lombok的配置
Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。
官网: https://www.projectlombok.org/
通过添加注解的方式,帮我们生成一些方法,提高开发人员的开发效率。
例如:
开发中经常需要写的javabean,要添加相应的getter/setter,也许还要去写构造器、equals等方法
当属性多时,会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量
使用Lombok,可以帮我们生成这些方法,我们就不用自己编写了
添加maven依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency>
安装插件
注意:Lombok插件暂不支持idea2020
使用Lombok还需要插件的配合。
打开idea的设置,点击Plugins,点击Browse repositories,在弹出的窗口中搜索lombok,然后安装即可
解决编译时出错问题
编译时出错,可能是没有enable注解处理器。Annotation Processors > Enable annotation processing。设置完成之后程序正常运行。
目标
@Data
@Getter/@Setter
@ToString
@NoArgsConstructor, @AllArgsConstructor
@Data
@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
@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
如果觉得@Data不够精细,可以使用@Getter/@Setter注解
此注解用在属性上,可以为相应的属性自动生成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注解,Lombok会生成一个toString()
方法
生成的toString
方法会输出类名、所有属性(会按照属性定义顺序),用逗号来分割。
通过exclude
属性指定忽略字段不输出,
@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
: 全参构造器
@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; }
在pom.xml里添加依赖坐标后,报红,引入依赖失败
可能有多方面因素导致,最常见的原因是:
网络不稳定,导致从中央仓库中下载依赖时失败
本地仓库中有大量的*.lastUpdated
文件,是下载依赖出错后遗留的不完整数据
第一步:配置阿里云的仓库镜像
打开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>
第二步:删除本地仓库里的缓存文件
以.lastUpdated
结尾的文件,是下载依赖失败后遗留的文件,需要清除掉
1.在本地仓库文件夹里搜索*.lastUpdated
2.把搜索到的所有文件全部删除
第三步:重新添加依赖
在pom.xml
中,删除原有的所有依赖
重新添加依赖进去。
Maven会自动重新导入依赖,如果本地仓库中没有,就会自动从阿里云仓库镜像下载依赖
感谢各位的阅读,以上就是“Maven安装与环境变量配置教程”的内容了,经过本文的学习后,相信大家对Maven安装与环境变量配置教程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。