Maven的介绍和使用(待补)

maven的作用
1.管理jar
  增加第三方jar (例如我要上传文件,commons-fileupload.jar commons-io.jar  )(版本可能下错)maven下载就不会冲突
  jar包之间的依赖关系 (commons-fileupload自动关联下载所有依赖的jar)
2.讲项目拆分成若干个模块

maven概念
    基于java平台的自动化构建工具
    make-ant-maven-gradle

maven能干的事
清理  将编译结果进行删除,为重新编译做准备
编译 java->class
测试 单元测试 开发人员 测试人员 (针对于项目中的关键点进行测试,亦可用项目中的测试代码去测试开发代码)
报告  将测试结果进行显示
打包  将项目中包含的多个文件 压缩成一个文件 用于安装 或者部署 (java项目打包成jar,web项目打包成war)
安装  将打成的包,放到本地仓库(现在有三个模块(项目),一个用来写DAO,一个是service,service依赖于dao,但是这是两个不同的项目,所以就要把它放到本地仓库,让其他模块去安装它,供其他项目使用)
本地仓库
中央仓库      (私服nexus)
中央仓库镜像 缓解服务器压力,不可能只有一个仓库,分流
(本地仓库是远程仓库的一个缓冲和子集,当你构建maven项目的时候,首先会从本地仓库查找资源,如果没有,那么maven会从远程仓库下载到你本地仓库。)

部署  将打成的包,放到服务器上准备运行(将java,js,jsp等各个文件进行筛选,组装,变成一个可以直接运行的项目)
    -eclipse中部署的web项目可以运行
    -将eclipse中的项目,复制到tmocat/webapps中则不能运行
    -项目可以在webapps中直接运行
    -eclipse中的项目,在部署时,会生成一个对应的部署项目(在wtpwebapps中)
    区别在于:部署项目,没有源码文件,只有编译后的class文件
    因为二者目录结构不一致,因此tomcat无法直接运行eclipse中复制过来的项目(因为 如果要在tomcat中运行一个项目,则该项目要严格遵循tomcat目录结构)
    可以右键eclipse的项目export,变成war包,然后放到wtpwebapps中,不需要解压,会自动解压(里面的文件结构符合tomcat)
    eclipse中的项目要在tomcat里运行,就需要部署
    
    
自动化构建工具:将原材料(java,js,css,html,图片)->产品(可发布项目)
编译-打包-部署-测试 (如果没有maven) -》自动构建(maven)
---------------------------
1.下载配置maven
  配置JAVA_HOME
  配置MAVEN_HOME
      M2_HOME
  配置path(bin目录)
  验证
    mvn -v
  配置本地仓库
    默认本地仓库(可以在maven目录中的conf的settings.xml中查看) : ${user.home}/.m2/repository
    修改本地仓库 : <localRepository>路径(例如D:/xxx)</localRepository>
2.使用maven
  约定 优于 配置
  硬编码方式  job.setPath("d://abc");
  配置方式  job  conf.xml <path>d:\\abc</path>
  约定:使用默认值
  maven约定的目录结构:
    项目
        src
            main     程序功能代码
              java    java代码
              resources    资源代码,配置代码
            test      测试代码
              java
              resources
        pom.xml  项目对象模型
        
        gav:
        <groupId>域名翻转+大项目名</groupId>
        <artifactId>子模块名</artifactId>
        <version>版本号</version>
        
        
       
        -----------------3  坐标详解----------------------------
        <groupId>org.sonatype.nexus</groupId>
        <artifactId>nexus-indexer</artifactId>
        <version>2.0.0</version>

        <packaging>jar</packaging>
        groupId
        定义当前maven项目隶属的实际项目。
        groupId的表示方式与Java包名的表示方式类似,如: <groupId>org.sonatype.nexus</groupId>

        artifactId
        该元素定义实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目的名称作为artifactId的前缀。
        如:<artifactId>nexus-indexer</artifactId>
        在默认情况下,maven生成的构件,其文件名会以artifactId作为开头,如:nexus-indexer-2.0.0.jar。

        packaging【可选的,默认为jar】:
        当不定义packaging时,maven会使用默认值jar。
        
       

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.2.6.ga</version>
</dependency>

它被下载后将会被存放至

%repository%/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar

其中%repository%就是你本地的repository目录!

不知大家看出来了没有,它是按你的Dependency的groupid + artifactid + version,然后以点号作分隔,来建立文件夹的,最后建立的文件夹如下

|--org

    |--hibernate

        |--hibernate

            |--3.2.6.ga

                |--hibernate-3.2.6.ga.jar

可能会有些人会问那个jar包的名字是怎么来的,细心的人或许早己观察出来了,没错,就是artifactId + "-" + version + ".jar"。

        
        依赖:
          一开始讲过
          在maven项目中,如果要使用一个当时存在的jar或模块,则可以通过依赖实现(本地仓库,远程仓库去寻找)
          执行mvn:必须在pom.xml所在的目录中执行(项目路径)
          编译(第一次会先下载maven基础jar包,从远程仓库下载后,放到本地仓库,第二次就不用了): mvn compile --只编译main目录
          测试(第一次会先下载测试基础环境):mvn test
          mvn package(第一次也是会下载执行该命令的基础环境)   打成jar/war
          mvn install(同) 将开发的模块 放入本地仓库 供其他模块使用 (路径在仓库的/groupId/ artifactId/ version/下)
          mvn clean(同) 清理项目里的编译文件的目录(target目录)
          
        
          
        <dependency>
            <groudId>junit</groudId>
            <artifactId>junit</artifactId>
            <version>4.0</version>
            <scope>test</scope>
        <dependency>  
          
依赖的范围,依赖的有效性
complie(默认) test provided


                           compile    test   provided
(编译)主程序(main)       √        ×          √
(测试)测试程序(test)     √        √          √
部署(运行)                 √        ×          ×

                           compile    test   provided
(编译)主程序(main)       A.jar        ×          A.jar
(测试)测试程序(test)     A.jar        A.jar      A.jar
部署(运行)                 A.jar        ×          ×

maven在编译,测试,运行项目时,各自使用一套classpath

在eclipse中创建maven工程:
1.配置maven
windows -> preferences 输入maven,找到installation,eclipse通常自带,最好使用自己下载的maven,然后user Settings,在User Settings找到自己的settings.xml路径,然后下方的localRepository会更改为你设置的本地仓库路径
在eclipse中编写完pom.xml依赖后,需要右键项目 maven-update project


运行:
Run As:
1 Maven build 执行上次Maven build...
2 Maven build... Goals中可以写clean compile test package等

maven生命周期:
生命周期和构建关系;
生命周期中的顺序:a b c d e
当我们执行c命令,实际执行abc
像package就是处于比较靠后的位置
package命令后,实际执行了:
resources
compile
test
package

发布了22 篇原创文章 · 获赞 19 · 访问量 3535

猜你喜欢

转载自blog.csdn.net/KnightHONG/article/details/102881648
今日推荐