您的位置:首页 > 其它

分分钟看懂 Maven配置、创建导入项目及Maven基础

2016-09-19 16:19 246 查看


什么是Maven

Maven 

Maven: Apache组织的一款开源项目,目的是为了服务于基于Java

              平台的项目构建、依赖管理和项目信息管理。

构建:编译、运行单元测试、生成文档、打包、部署等等这些工作。

作为构建工具:Maven可以自动完成构建的过程。

优点:

               ①避免重复构建的过程。

               ②标准化构建的流程。

不仅作为构建工具:Maven还是一个依赖管理和项目信息管理的工具。

体现:

               ①提供了中央仓库,帮助开发者自动下载构件(jar包)。Maven利用坐标定位构件(通过Nexus可以对Maven仓库进行快速搜索,定位坐标)。

               ②管理项目信息。如:项目名、开发者列表、版本控制系统地址、许可证、缺陷管理地址等。

还能轻松获取项目文档、测试报告、静态分析报告、源码版本日志报告等信息。

配置Maven

1.配置maven环境变量:

        系统变量:MAVEN_HOME = C:\apache-maven-3.2.5

        系统变量:path = %MAVEN_HOME%\bin

2.测试打开 cmd,在里面敲:mvn –version    弹出maven版本等信息说明成功

3.修改 maven 本地仓库存放位置

        默认是放在本地用户的临时文件夹下面的 .m2 文件夹下的 repository 下

        找到 maven目录下的 conf 下的 settings.xml 配置文件



更改本地仓库地址:我放在了E:\test下了


http://www.cnblogs.com/skyme/archive/2011/08/19/2146105.html   settings.xml说明

仓库: maven项目中依赖的jar包存放的地方.

4.配置代理服务器(可选)
http://blog.csdn.net/zzq900503/article/details/41046611
如果公司使用HTTP代理服务器来阻止用户直接连接到互联网。这时需要配置代理服务器Maven才能下载依赖。

创建项目骨架

1.创建项目目录,进入项目目录后执行mvn archetype:generate

    首次运行时,mvn会从远程"中央仓库"下载一些必需的文件到"本地仓库“
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 336: (这里根据每个人机器上安装的eclipse插件不同,可能默认的数字不是这个,先不管,直接回车)


5: 1.0 6: 1.1 Choose a number: 6: (直接回车)



Define value for property 'groupId': : cnblogs (可暂时先理解成类似package或namespace的名称,通常我们填写组织机构名称缩写) Define value for property 'artifactId': : maven-hello-world (组件名称,可暂时理解成项目名称) Define value for property 'version':  1.0-SNAPSHOT: : (版本号,直接回车,默认1.0-SNAPSHOT) Define
value for property 'package':  cnblogs: : (打包后的jar文件名)

 Y: :  (直接回车确认)

 BUILD SUCCESS (看到这个,表示项目创建成功!)

groupId是帮助项目对象在仓库中定位的

  artifactId决定了生成的项目文件夹目录的名称

  version是项目版本号

        package 是项目source文件下最顶层的包名

查看maven项目的目录结构



            进入maven项目目录 执行:tree

maven项目采用“约定优于配置”的原则,src/main/java约定用于存放源代码,src/main/test用于存放单元测试代码,src/target用于存放编译、打包后的输出文件。这是全世界maven项目的通用约定

编译项目

            mvn clean compile  这样就能对项目进行编译了,编译后会自动在target目录中生成class文件,如果编译成功,会输出类似下面的信息



单元测试

             mvn clean test

会先执行compile,即先编译,再执行单元测试

项目打包

             通常我们会把java项目打包成jar包或war包,maven中打包的命令为  “mvn clean package” 运行完后,会在target目录下生成jar包

注:从输出 可以发现,package前,会先执行compile,再执行test,最后才是package打包

eclipse创建项目

1. 安装m2eclipse插件   要用Eclipse构建Maven项目,我们需要先安装meeclipse插件   点击eclipse菜单栏Help->Eclipse Marketplace搜索到插件Maven Integration for



等待安装Maven插件



创建Maven项目



选择创建项目类型

创建web项目选择下面这个





groupId是帮助项目对象在仓库中定位的

artifactId决定了生成的项目文件夹目录的名称

version是项目版本号

package 是项目source文件下最顶层的包名

右键项目配置版本

Maven项目导入





项目导入或创建成功后可以看到如上图所示




Maven如何管理Jar包

Maven通过pom.xml文件中坐标管理jar包

Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,它们是groupId,artifactId,version,packaging,class-sifer。下面是一组坐标定义



Maven下载jar包的过程



私库 : 有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。

Maven中会涉及到几种仓库

1.工作空间 ,在我们Maven项目中可以看到pom.xml文件,pom.xml就是maven的配置文件

2 .本地仓库,本地仓库用于存放jar包,其实Jar包并不是直接放入工作空间的,它是存放在本地仓库,然后在执行发布打包的时候,添加依赖路径

3 私库:私库是使用者自己搭建的maven仓库,用于缓解频繁从外网下载jar包资源的压力。而且使用私库作为缓存层,也相对安全一些。

4 共享仓库:书中所说的中央仓库或者一些常用的镜像网站都属于这种,国内比较著名的oschina以及163都是不错的maven仓库。

1 Maven在执行相关的任务时,会先去本地仓库查看是否有该资源,如果有的话,判断版本是否正确,如果一切都没问题则直接使用;否则,执行下一步

2 Maven会去配置的共享仓库中查找,如果找到就拷贝到本地仓库中;找不到则会给出相关的提示

3 Maven在本地如果搭建了私库,则会去私库中查找,找到就拷贝到本地仓库;找不到就会去共享仓库中查找,然后放入私库和本地库。有了私库,局域网内的开发者可以共享依赖,就不用每个人都去外网下载jar包,浪费带宽了。


Maven的生命周期与阶段

Maven中有三大生命周期,他们相互独立,分别是:

          1 .clean 清理

          2 .default 构建

          3 .site 建站

一般来说,clean和default比较常用。

每个生命周期又有不同的阶段,阶段按顺序执行,并且可以指定执行结束的阶段。构建的时候,会依次从最上面的阶段执行到指定的那个阶段。

clean 生命周期

      clean生命周期的目的是清理项目,它包含三个阶段:

     1)pre-clean 执行一些清理前需要完成的工作。

     2)clean 清理上一次构建生成的文件。

     3)post-clean 执行一些清理后需要完成的工作。

当我们输入mvn clean的时候,执行的是pre-clean和clean两个阶段。

default 生命周期

       default生命周期定义了真正构件时所需要执行的所有步骤,它是生命周期中最核心的部分,它包含的阶段如下:

       1) validate 验证项目是否正确和所有需要的相关资源是否可用

       2) initialize 初始化构建

       3) generate-sources

       4)   process-sources 处理源代码

       5) generate-resources 

       6)   process-resources 处理项目主资源文件。对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。

       7) compile 编译项目的主源代码

       8) process-classes

       9)   generate-test-sources

       10) process-test-sources 处理项目测试资源文件

       11)generate-test-resources

       12)  process-test-resources 处理测试的资源文件

       13)test-compile 编译项目的测试代码

       14)process-test-classes

       15)  test 使用单元测试框架运行测试,测试代码不会被打包或部署

       16)prepare-package 做好打包的准备

       17)package 接受编译好的代码,打包成可发布的格式

       18)  pre-integration-test

       19)  integration-test

       20)  post integration-test

       21)  verify

       22)  install 将包安装到Maven本地仓库,供本地其他Maven项目使用

       23)deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用

site 生命周期

      site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:

      1)pre-site 执行一些在生成项目站点之前需要完成的工作

      2)site 生成项目站点文档

      3)post-site 执行一些在生成项目站点之后需要完成的工作

      4)site-deploy 将生成的项目站点发布到服务器上

当执行mvn install的时候,实际会执行validate-->initialize-->...-->verify-->install等二十几个阶段。

            为了操作方便,不同的声明周期可以在一起执行,比如mvn clean install,会先执行clean的阶段,在执行install的阶段。

            开发环境中,当我们Run as的时候,就可以执行maven clean进行清理,或者执行maven install进行构建,也可以执行maven build同时执行clean和install两个任务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: