欢迎大家来到IT世界,在知识的湖畔探索吧!
Apache Maven是一个很流行的软件项目管理和理解工具,它能够被用来构建和管理任何基于java的项目,主要有以下几个目标:
- • 简化构建过程
- • 提供统一的构建系统
- • 提供高质量的项目信息
- • 鼓励更好的开发实践
考虑到maven的流行度,本篇就先从maven的安装和配置讲起。
1、安装maven
maven官网最新的版本是3.9.1,我们就以此版本为例进行讲解。
注:maven 3.9+以上的版本需要依赖JDK 8或者更高版本的JDK。
1.1 、下载maven
点击apache-maven-3.9.1-bin.zip进行下载,或者直接访问以下网址进行下载
https://dlcdn.apache.org/maven/maven-3/3.9.1/binaries/apache-maven-3.9.1-bin.zip
欢迎大家来到IT世界,在知识的湖畔探索吧!
1.2、解压文件
将刚才下载下来的apache-maven-3.9.1-bin.zip文件解压到我们常用的安装开发工具的目录,比如
D:\developer目录,那么maven的主目录就是D:\developer\apache-maven-3.9.1-bin
1.3、配置系统环境变量
(1)进入Windows系统的”高级系统设置”,点击右下角的“环境变量”,进入环境变量的维护页面
(2)编辑”系统变量”列表中的Path配置项,在编辑页面新增一条配置项的值,也即新安装的maven的bin目录的全路径名:D:\developer\apache-maven-3.9.1-bin\bin,然后点击确定保存。
(3)打开一个新的cmd命令行页面,执行下述命令
欢迎大家来到IT世界,在知识的湖畔探索吧!mvn -version
如果得到类似下面的响应输出,说明安装成功。
Apache Maven 3.9.1 (2efcdbffcfb2537d0cb4b4cc58f8) Maven home: D:\developer\apache-maven-3.9.1-bin\bin\.. Java version: 1.8.0_281, vendor: Oracle Corporation, runtime: D:\developer\Java\jdk1.8\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
2、maven配置文件详解
我们先看一下官方给我们提供的settings.xml文件的格式,可以在maven安装目录下的conf目录下找到该文件。
欢迎大家来到IT世界,在知识的湖畔探索吧!<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 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository/> <interactiveMode/> <offline/> <pluginGroups/> <servers/> <mirrors/> <proxies/> <profiles/> <activeProfiles/> </settings>
我们挑其中常用的重要配置项来看下。
2.1、localRepository配置
localRepository配置项用来配置maven的本地仓库地址,简单说就是用来存储通过maven下载下来的各种jar包。如果我们的项目pom.xml文件依赖了某个jar包,默认会先从我们本地仓库去查找,查不到的请求下,再去请求外部仓库。
该配置的默认值是:
${user.home}/.m2/repository
${user.home}指用户的主目录,比如我的就是C:\Users\xt
如果我们想节省C盘的空间,想把jar包存储到其他磁盘,可以这么设置
<localRepository>D:/programs/.m2/repository</localRepository>
2.2、servers配置
该配置项主要是用来为各个远程仓库配置认证信息,比如访问远程仓库时需要提供用户名和密码信息,它的结构如下:
<servers> <server> <id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> </server> <server> <id>deploymentRepo2</id> <privateKey>/path/to/private/key</privateKey> <passphrase>ddddd</passphrase> </server> </servers>
结点下面可以有多个结点,其中server结点下的子结点释义如下:
- • id,对应repository或mirror的id,用来指定该配置项是针对哪个仓库的,必填项
- • username,访问仓库的用户名
- • password,访问仓库的密码
- • privateKey,访问仓库的私钥
- • passphrase,访问仓库的口令,可选
其中username和password成对出现,privateKey和passphrase成对出现。两种认证方式不同,我们配置时只需要选取其中一种就可以。常用的就是配置用户名和密码。
2.3、mirrors配置
mirrors配置项主要是用来为远程仓库配置镜像站点,我们可以基于以下情况来考虑使用mirrors镜像配置。
- • 分担远程仓库的访问压力,同时又不希望修改repoistory仓库的配置
- • 用自己的内部仓库替换掉特定的仓库,比如替换掉central仓库
mirrors的结构如下:
<mirrors> <mirror> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <mirrorOf>central</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors>
结点下面可以包含多个子结点,其中mirror结点下面的子结点释义如下:
- • id,镜像仓库的id,要保证唯一,不能和mirrors和repositories下面的id相同,因为镜像仓库本质上也是仓库,下载jar包时,会根据此id去servers结点下面查找server结点配置的认证信息
- • name,镜像仓库的名称,方便用户识别该仓库
- • mirrorOf,需要做镜像的仓库的id值,也就是取repository的id值
- • url,镜像仓库的地址
关于此段配置,我们一般会用来替换maven的central仓库,mirrorOf的值就写成central,url的值配置为阿里云maven仓库地址或者公司内网的maven仓库地址。
2.4、profiles配置
profiles配置项用来配置我们常用的仓库,而且可以对这些仓库进行分类,在特定的条件下使特定类别的仓库生效,当然也可以默认指定使用某些仓库。
注意:官方更推荐在pom.xml文件中定义profiles
profiles的结构如下:
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> </repositories> <pluginRepositories> <pluginRepository> </pluginRepository> </pluginRepositories> </profile> <profile> <id>test</id> <activation> <activeByDefault>false</activeByDefault> </activation> <repositories> </repositories> <pluginRepositories> <pluginRepository> </pluginRepository> </pluginRepositories> </profile> </profiles>
结点下面可以有多个结点,我们就是通过profile结点对仓库进行分类。profile结点的子节点释义如下:
- • id,标识profile,单个文件中的profile的id值要保证唯一,后续靠这个值来激活对应的profile
- • activation,自动激活相关的配置,其中它的子节点activeByDefault配置为true,则默认激活当前的profile
- • repositories,仓库列表配置
- • pluginRepositories,插件仓库列表配置
repositories和pluginRepositories这两部分包含内容较多,我们分开来看
2.4.1、repositories配置
repositories用来配置各个仓库的信息。之所以有这样的设计,其中一个原因就是我们平时开发所需的jar包可能分散在不同的仓库里,由于仓库之间是独立的,如果把所有的包都维护在一个仓库,本身也会影响仓库的性能,所以这时就需要结合多个仓库来使用了。
repositories结构如下:
<repositories> <repository> <id>dev</id> <name>开发仓库</name> <releases> <enabled>false</enabled> <updatePolicy>always</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> <url>http://192.168.1.1/repository/dev</url> </repository> </repositories>
结点下面有多个repository结点,repository结点下面的子节点释义如下:
- • id,仓库的id,需要全局唯一,也不能和mirror的id相同
- • name,仓库的名称,随便起,只是方便我们识别仓库
- • releases,发布版本的配置
- • snapshots,快照版本的配置
- • enabled,true或false,代表该仓库对指定类型(releases或snapshots)的版本的jar包是否有效,b比如releases下面的enabled如果是true,那么下载发布版本的jar包就可以使用到该仓库。
- • updatePolicy,是指更新策略,alway代表每次下载jar包都从远程仓库下载并更新本地jar包;daliy是默认值,指每天下载jar包都会去远程下载并更新一次本地的jar包。never指的是只要本地有jar包,就一直使用本地的。针对snapshots的配置,我们一般会设置为always
- • url,仓库的地址
2.4.2、pluginRepositories配置
pluginRepositories是指插件仓库,用来管理我们使用到maven插件的仓库。我们平时使用的jar包一般分两种,一类就是这种jar包需要被别的项目依赖,另一种jar包就是maven自身使用到的jar包,也叫插件。maven官方针对这两类jar包,就给出了pluginRepositories和repositories这两类的配置。而repositories就配置我们项目开发常用的彼此之间存在依赖的jar包所在的仓库。
pluginRepositories的结构如下:
<pluginRepositories> <pluginRepository> <id>testPluginRepo</id> <name>测试插件仓库</name> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <url>http://192.168.1.1/repository/testPlugin/</url> </pluginRepository> </pluginRepositories>
pluginRepositories结点下可以有多个pluginRepository结点,pluginRepository结点下的子节点的释义和repository的一样,此处就不再重复了。
2.5、activeProfiles配置
activeProfiles配置项用来指定哪些profile生效,它的结构如下:
<activeProfiles> <activeProfile>dev</activeProfile> </activeProfiles>
activeProfiles结点下面可以多个activeProfile结点,activeProfile对应的值就是profile的id。
结束语
本文先分享到这里,觉得有收获的朋友,可以关注我,或者进行分享或收藏,有疑惑的也可以来私聊评论,我会及时进行回复~
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/87432.html