maven之从入门到精通第一篇
何为maven
是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的。
maven有哪些优点
优点如下:
- 依赖管理 ,项目中的jar包由仓库来管理,和传统项目比起来maven项目所占空间更小;
- 项目一键构建,清理clean、编译compile、测试(junit)、运行、打包package、部署只需一个命令即可;比如一个tomcat:run就可以启动项目;
- 支持跨平台;
- 应用于大型项目,可以提高开发效率,举个例子:用户管理、订单管理、支付管理等等,Maven的分模块开发,场景–互联网项目可以按业务分,而传统项目可以按层分,比如entity、dao、service、web;
maven下载与安装
链接: 地址,可根据版本自行下载.
- 下载完成后并将其解压
bin目录mvn.bat(以run方式运行项目)、mvnDebug.bat(以debug方式运行项目),boot目录maven运行需要类加载器,conf目录settings.xml是整个maven工具核心配置文件,lib目录maven运行依赖jar包
解压目录如下:
- 配置环境变量
jdk1.7+以上,MAVEN_HOME指向maven解压的目录,然后将%MAVEN_HOME%/bin加入环境变量path中,可以通过mvn - v命令来查看maven是否安装成功
maven版本查询如下:
maven仓库
maven仓库的作用
maven项目会通过maven软件从远程仓库(公司私服)下载jar包并存到本地仓库,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库里已存在jar了,有了本地仓库就不用每次从远程仓库下载了。
3. 本地仓库:用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用的插件和jar包,优先从本地仓库查找。默认本地仓库位置在
u
s
e
r
.
d
i
r
/
.
m
2
/
r
e
p
o
s
i
t
o
r
y
,
{user.dir}/.m2/repository,
user.dir/.m2/repository,{user.dir}表示windows用户目录。可以在conf中的setting.xml设置本地仓库地址,如下图
4. 远程仓库:如果本地需要插件或者jar包,本地仓库没有,就默认去远程仓库下载,远程仓库可以在互联网内也可以在局域网内
5. 中央仓库:在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2,它是中央仓库,服务于整个互联网,它是由maven团队自己维护,里面存储非常全的jar包,它包含了世界上大部分流行的开源项目构件。
maven在eclipse中的配置
- eclipse中配置使用的maven的setting.xml文件,使用maven安装目录下的setting.xml文件,如果修改了setting.xml文件需要点击上图中的update settings按钮对本地仓库重建索引,点击Reindex,如下图:
eclipse浏览仓库
- 找到local respository本地仓库项,点击Rebuild index重建索引,操作如下图
定义maven坐标
下面展示一些 内联代码片
。
<!--项目名称,定义为组织名+项目名,类似包名-->
<groupId>com.aaa.xxx</groupId>
<!--模块名称-->
<artifactId>spring-cloud</artifactId>
<!--当前项目版本号,比如0.0.1-SNAPSHOT,snapshot为快照版本即非正式版本,1.5.13.RELEASE,release为正式发布版本-->
<version>0.0.1-SNAPSHOT</version>
<!--打包类型,jar:执行package会打成jar包,war:执行package会打成war包,pom:用于maven工程的继承,通常父工程设置为pom-->
<packaging>pom</packaging>
eclipse中创建maven项目
- 选择Maven Project
- 选择跳过骨架,如果不跳过骨架,创建的maven工程目录不全,这里跳过骨架
- 当我们不跳过骨架点击next会进入骨架选择页面,若ecplise中配置本地仓库正确则显示骨架
- 选择webapp会创建一个maven工程(java web工程),选择quickstart会创建一个maven工程(java工程),使用骨架的问题是创建的maven工程目录不完整,所以不推荐使用
- 定义坐标
- 使用maven插件来设置编译版本
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
maven项目的依赖范围
- compile、provided、runtime、test、system
依赖范围由强到弱的顺序是:compile>provided>runtime>test,比如添加jsp/servlet依赖,为了防止和tomcat下的jar包冲突
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>proided</scope>
</dependency>
```;