Maven配置及介绍
很多时候开发效率低下,大部分原因是IDE环境不熟悉、配置不会配置;因此在学习一项技能之前,有必要对基本的环境配置有所了解,正所谓磨刀不误砍柴工。这篇文章主要针对初次接触Maven,不熟悉配置的研究人员。
以前开发Java Web工程时,需要导入很多依赖包,但是随着工程逐渐变大,所管理的包越来越多,有必要使用工具来管理这些包,这样不需要我们手动导入;Maven就是为了解决管理jar的问题。
Maven是一个采用纯Java编写的开源项目管理工具,它采用了一种被称之为 POM(Project Object Model)概念来管理项目,所有的项目配置信息都被定义在一个叫做pom.xml的文件中,通过该文件,Maven可以管理一个项目的整个生命周期,包括编译,构建,测试,发布,报告等。
1)下载Maven
http://maven.apache.org/download.cgi 官网下载
点击Download --我下载的是 Apache Maven 3.6.1版本的
下载到本地目录,然后解压即可
2)Maven基本配置
将maven目录下conf-->settings.xml文件拷贝到,C盘-->用户-->.m2文件夹下
settings里面就是配置maven工程的一些本地仓库地址(项目使用的某些jar下载并且安装到本机中),远程仓库(如果本机没有需要的jar,则从远程获取。)的配置等信息。
3)maven在eclipse中的配置。首先打开eclipse开发工具,eclipse中的各种配置文件一般都是通过window窗口进行设置。打开导航工具栏上的window即可对工作空间进行设置。
4)打开window之后,可以看到很多功能的设置,新建window窗口、配置显示信息、打开window其他功能设置等。这里我们对maven地址配置,选择最后一个preferences选项
5)在打开的配置项页面中,可以输入maven关键字,快速定位到maven文件夹,在maven文件夹下找到User Settings,主要是配置用户设置。
6)在查找用户配置user settings的时候,也可以通过依次展开文件夹的方式,直接点击选择maven文件夹,在maven文件夹下就可以看到用户设置选项。
7)点击user settings在用户配置界面中,有两个设置框,一个是Global Settings(全局配置信息)和User Settings(只针对这个工作空间进行设置)。根据自己的实际情况设置相应的settings文件。
maven的配置文件settings.xml存在于两个地方:
1.安装的地方:${M2_HOME}/conf/settings.xml
2.用户的目录:${user.home}/.m2/settings.xml
前者又被叫做全局配置,对操作系统的所有使用者生效;后者被称为用户配置,只对当前操作系统的使用者生效。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml会覆盖全局的settings.xml。
Maven安装后,用户目录下不会自动生成settings.xml,只有全局配置文件。如果需要创建用户范围的settings.xml,可以将安装路径下的settings复制到目录${user.home}/.m2/。Maven默认的settings.xml是一个包含了注释和例子的模板,可以快速的修改它来达到你的要求。
如下图eclipse中配置settings.xml的默认本地仓库路径已经自定义的本地仓库路径:settings.xml配置文件。
打开eclipse -> Window ->Preferences -> Maven,
注明:
如果你选择全局配置文件,那么你就选择您maven下载放在哪个文件夹对应的settings.xml
如果你选择用户配置文件,那么你就选择您默认C盘/user/.m2文件夹下的settings.xml
全局配置一旦更改,所有的用户都会受到影响,而且如果maven进行升级,所有的配置都会被清除,所以要提前复制和备份${M2_HOME}/conf/settings.xml文件,一般情况下不推荐配置全局的settings.xml。
8)配置环境变量
配置maven环境:我的电脑->属性->高级系统设置->新建环境变量:MAVEN_HOME , 变量值为刚解压的maven路径,我的是:E:\Maven\apache-maven-3.6.1-bin\apache-maven-3.6.1。再在Path变量中加上:%MAVEN_HOME%\bin;
注意:配置Maven时,环境变量里面一定要存在JAVA_HOME,即要配置好JDk的环境。
9)测试看看是否成功的配置环境
4.windows+r键输入cmd,打开dos命令,输入mvn -v 进行测试,如出现下图样,则配置成功。
用编译器打开下载解压位置的settings.xml 这个文件
在文件中可以看到localRepository配置的就是本地仓库,本地仓库地址的目录最好是全英文格式,不要包含汉字空格等其他特殊字符。也可以修改仓库地址
mirror表示的是访问镜像。如果本地仓库没有项目所需要的jar包,就会通过这里的mirror配置的url地址进行从远程仓库获取需要的jar,同事将这个jar添加到本地目录中,当再次使用的时候,就会直接从本地仓库中直接获取。
修改后的settings.xml文件 复制到你的本地仓库url中
开启Maven的视图, 检查是否已经配置了镜像库
下载基本的文件
在命令行中输入mvn help:system 看到如下说明完成:
如果出现以上错误
问题解决
settings.xml配置详解
作用:该值表示构建系统本地仓库的路径。
其默认值:~/.m2/repository。
E:\SSM\maven\LocalWarehouse\.m2\repository
作用:表示maven是否需要和用户交互以获得输入。
如果maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true。
作用:表示maven是否需要在离线模式下运行。
如果构建系统需要在离线模式下运行,则为true,默认为false。
当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。
作用:当插件的组织id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。
该元素包含一个pluginGroup元素列表,每个子元素包含了一个组织Id(groupId)。
当我们使用某个插件,并且没有在命令行为其提供组织Id(groupId)的时候,Maven就会使用该列表。默认情况下该列表包含了org.apache.maven.plugins和org.codehaus.mojo。
com.your.plugins
-->
作用:一般,仓库的下载和部署是在pom.xml文件中的repositories和distributionManagement元素中定义的。然而,一般类似用户名、密码(有些仓库访问是需要安全认证的)等信息不应该在pom.xml文件中配置,这些信息可以配置在settings.xml中。
作用:为仓库列表配置的下载镜像列表。
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
作用:根据环境参数来调整构建配置的列表。
settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。
它包含了id、activation、repositories、pluginRepositories和 properties元素。这里的profile元素只包含这五个子元素是因为这里只关心构建系统这个整体(这正是settings.xml文件的角色定位),而非单独的项目对象模型设置。如果一个settings.xml中的profile被激活,它的值会覆盖任何其它定义在pom.xml中带有相同id的profile。
/path/to/tomcat/instance
-->
作用:手动激活profiles的列表,按照profile被应用的顺序定义activeProfile。
该元素包含了一组activeProfile元素,每个activeProfile都含有一个profile id。任何在activeProfile中定义的profile id,不论环境设置如何,其对应的 profile都会被激活。如果没有匹配的profile,则什么都不会发生。
例如,env-test是一个activeProfile,则在pom.xml(或者profile.xml)中对应id的profile会被激活。如果运行过程中找不到这样一个profile,Maven则会像往常一样运行。
alwaysActiveProfile
anotherAlwaysActiveProfile
-->
Servers
server001
my_login
my_password
${usr.home}/.ssh/id_dsa
some_passphrase
664
775
Mirrors
添加国内镜像源
添加
planetmirror.com
PlanetMirror Australia
http://downloads.planetmirror.com/pub/maven2
central
eg:
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/repositories/central/
repo1
central
Human Readable Name for this Mirror.
http://repo1.maven.org/maven2/
repo2
central
Human Readable Name for this Mirror.
http://repo2.maven.org/maven2/
huaweicloud
*
https://mirrors.huaweicloud.com/repository/maven/
使用maven镜像
综述
用maven做项目,最郁闷的莫过于某些依赖库下载不了。被墙了,你懂的。使用maven镜像仓库及其重要,特别是国内的镜像,可以有效缓解被墙疼痛。
常用的镜像
国外镜像
ibiblio.org
ibiblio
central
ibiblio Mirror of http://repo1.maven.org/maven2/
http://mirrors.ibiblio.org/pub/mirrors/maven2/
jboss
jboss-public-repository-group
central
JBoss Public Repository Group
http://repository.jboss.org/nexus/content/groups/public
repo2
repo2
central
Human Readable Name for this Mirror.
http://repo2.maven.org/maven2/
uk.maven.org
ui
central
Human Readable Name for this Mirror.
http://uk.maven.org/maven2/
国内镜像
oschina.net
nexus-osc
*
Nexus osc
http://maven.oschina.net/content/groups/public/
net.cn
net-cn
central
Human Readable Name for this Mirror.
http://maven.net.cn/content/groups/public/
使用镜像
下文以oschina.net的镜像为例子.
1.Maven 的安装目录下的 conf 文件下有个settings.xml文件,编辑该文件
2.在
nexus-osc
*
Nexus osc
http://maven.oschina.net/content/groups/public/
3.这里是配置 Maven 的 mirror 地址指向OSChina 的 Maven 镜像地址。 在执行 Maven 命令的时候, Maven 还需要安装一些插件包,这些插件包的下载地址也让其指向 oschina.net 的 Maven 地址。在
jdk-1.4
1.4
nexus
local private nexus
http://maven.oschina.net/content/groups/public/
true
false
nexus
local private nexus
http://maven.oschina.net/content/groups/public/
true
false
Proxies
作用:用来配置不同的代理。
myproxy
true
http
proxy.somewhere.com
8080
proxyuser
somepassword
*.google.com|ibiblio.org
Profiles
test
eg: 修改使得jdk默认值是1.8
JDK-1.8
true
1.8
1.8
1.8
1.8
Activation
false
1.5
Windows XP
Windows
x86
5.1.2600
mavenVersion
2.0.3
${basedir}/file2.properties
${basedir}/file1.properties
注:在maven工程的pom.xml所在目录下执行mvn help:active-profiles命令可以查看中央仓储的profile是否在工程中生效
Repositories
codehausSnapshots
Codehaus Snapshots
false
always
warn
http://snapshots.maven.codehaus.org/maven2
default
pluginRepositories
作用:发现插件的远程仓库列表。
和repository类似,只是repository是管理jar包依赖的仓库,pluginRepositories则是管理插件的仓库。
maven插件是一种特殊类型的构件。由于这个原因,插件仓库独立于其它仓库。pluginRepositories元素的结构和repositories元素的结构类似。每个pluginRepository元素指定一个Maven可以用来寻找新插件的远程地址。
最后修改完源码:
E:\SSM\maven\LocalWarehouse\.m2\repository
alimaven-central
central
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
nexus-osc
*
Nexus osc
http://maven.oschina.net/content/groups/public/
jdk18
1.8
true
1.8
1.8
1.8
nexus
local private nexus
http://maven.oschina.net/content/groups/public/
true
false
nexus
local private nexus
http://maven.oschina.net/content/groups/public/
true
false
修改增加本地仓库的url 和镜像的地址后 win+R cmd 运行mvn help:system
第二步:回到eclipse中点击window再点击preferences
环境就算搞定了。接下来要应用Maven来打包Project为大家服务的。
在cmd中的命令:
a. mvn eclipse:clean 清除Project中以前的编译的东西,重新再来
b. mvn eclipse:eclipse 开始编译Maven的Project
在Myeclipse中的操作:
a. 选中Maven Project 右击 在Run As中选择Maven clean
b. 在Myeclipse中,Project—Clean 开始编译
c. 选中Maven Project 右击 在Run As中选择Maven install
执行完这几步,如果没发生异常,会在project里生成一个target文件夹,这个文件夹里的东西,就是Maven打包发布的东西。
在Eclipse上安装maven
打开Eclipse点击window>prferences之后会弹出
点击确定之后会出现:
点击finish之后:
这个时候你就把maven装在你的Eclipse中了
接下来在eclipse中配置使用
1:此处修改为自己解压的Maven目录
2:勾选Override,修改为自己目录下的settings.xml目录
3:修改为自己的本地仓库地址,一般会自动识别。
4.设置eclipse的Maven插件引入依赖jar包后自动下载并关联相应的源码
其实 eclipse 的 Maven 插件就提供了这个功能,但是可能有许多开发人员没关注这个功能,所以这个分享给那些不太清楚这个功能的同学,配置很简单,只需要勾选windows-Preferences-Maven- Download Artifact Sources这个选项就可以了 。