构建的环节

  1. 清理:将以前编译得到的旧的class字节码文件删除
  2. 编译:将Java源程序编译成class字节码文件
  3. 测试:自动测试,自动调用junit程序
  4. 报告:测试程序执行的结果
  5. 打包:动态Web工程打成war包,Java工程打成jar包
  6. 安装:将打包得到的文件复制到仓库中指定位置
  7. 部署:将动态Web工程生成的war包复制到Servlet容器的指定目录下,使其可以自动化构建

    安装Maven

  8. 检查确定环境变量“JAVA_HOME”没有错误

  9. 将Maven下载或解压至一个非中文无空格的目录下
  10. 配置Maven相关的环境变量
    1. MAVEN_HOME或M2_HOME
    2. PATH
  11. 验证Maven是否配置成功,使用命令“mvn -v”
  12. 在setting.xml中更改localRepository到除c盘的其他位置
  13. 在setting.xml中更改远程仓库
  14. 设置通过Maven创建的工程的JDK版本

    1. 打开settings.xml文件
    2. 找到profiles标签
    3. 加入如下配置 ``` jdk-1.7 true 1.7

    1.7 1.7 1.7 ```

    在编译器中设置Maven

    Eclipse

  15. 找到工具栏window下的preference中的maven

  16. 在maven中分别设置Installations和User Settings
  17. 在Installations中add本机中的maven
  18. 在User Settings中将setting.xml改为本机所装的maven的setting.xml

    Maven的核心概念

  19. 约定的目录结构

  20. POM
  21. 坐标
  22. 依赖
  23. 仓库
  24. 生命周期/插件/目标
  25. 继承
  26. 集合

    Maven工程的目录结构

  • Hello(工程名)
    • src
      • main
        • java
        • resources
      • test
        • java
        • resources
    • target(编译后会生成)
    • pom.xml

      常用的Maven命令

      注意:
  1. 执行与构建过程相关的Maven命令必须进入pom.xml所在的目录
  2. 在编译时Maven仓库没有对应需要的包或插件会联网下载
  3. 在Maven的setting.xml中更改Maven仓库的位置


  1. mvn clean:清理(会删除target目录)
  2. mvn compile:编译主程序(生成target目录及class子目录)
  3. mvn test-compile:编译测试程序(生成target目录及test-class子目录)
  4. mvn test:执行测试
  5. mvn package:打包(生成一个报告文件夹以及一个jar包在target目录中)
  6. mvn install:将自己写的jar包安装到Maven仓库中(在自己写的Maven工程目录下执行)
  7. mvn site:生成站点
  8. mvn deploy:部署

    POM(Project Object Model)

    pom.xml是Maven工程的核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置(相当于web.xml对于动态Web工程)

    Maven中的坐标

    使用下面三个值在Maven仓库中唯一定位一个Maven工程

  9. groupid:公司或组织的域名倒序+项目名

<groupid>com.atguigu.maven</groupid>

  1. artifactid:模块名

<artifactid>Hello</artifactid>

  1. version:版本

<version>1.0.0</version>
Maven坐标与仓库中路径的对应关系:

  1. <groupId>org.springframework</groupId>
  2. <artifactId>spring-core</artifactId>
  3. <version>4.0.0.RELEASE</version>
  4. org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar

仓库

分类

  1. 本地仓库:当前电脑上部署的仓库目录
  2. 远程仓库

    1. 私服:搭建在局域网中,为局域网范围内服务的Maven仓库
    2. 中央仓库:在Internet上为世界范围服务的Maven仓库
    3. 中央仓库镜像:分布在世界上各个地区的Maven仓库,用于分担中央仓库压力

      仓库内容

  3. Maven自身需要的插件

  4. 第三方框架或工具的jar包
  5. 我们自己开发的Maven工程

    依赖

    依赖的范围

  6. compile范围依赖

    1. 是否对主程序有效(main):有效
    2. 是否对测试程序有效(test):有效
    3. 是否参与打包:参与
  7. test范围依赖(Junit)
    1. 是否对主程序有效(main):无效
    2. 是否对测试程序有效(test):有效
    3. 是否参与打包:不参与
  8. provided范围依赖(servlet-api.jar)

    1. 是否对主程序有效(main):有效
    2. 是否对测试程序有效(test):有效
    3. 是否参与打包:不参与
    4. 是否参与部署:不参与

      依赖的传递性

      注意:非compile范围的依赖不会传递

      依赖的排除

      依赖排除的设置方式 ``` org.springframework spring-core 4.0.0.RELEASEcoompile

    ```


依赖的原则
解决模块工程质检的jar包冲突原则

  1. 就近原则
  2. 相同距离,先声明者优先

统一管理依赖版本号(properties标签)

  1. <properties>
  2. <spring-version>4.0.0.RELEASE</spring-version>
  3. </properties>
  4. //在dependency中使用
  5. <dependency>
  6. <groupId></groupId>
  7. <artifactId></artifactId>
  8. <version>${spring-version}</version>
  9. </dependency>

继承

需求情景:比如test范围的依赖不能传递,例如Junit各个工程使用的版本号可能不同,这时需要统一管理,则使用继承的方式。

操作步骤:

  1. 创建一个Maven工程作为父工程,打包方式为pom
  2. 在子工程中声明对父工程的引用

    1. <parent>
    2. <groupId></groupId>
    3. <artifactId></artifactId>
    4. <version></version>
    5. //以当前文件为基准的父工程pom.xml文件的相对路径
    6. <relativePath>../Parent/pom.xml</relativePath>
    7. </parent>
  3. 将子工程的坐标中与父工程坐标中重复的内容删除

  4. 在父工程中统一管理Junit等依赖 ```

  1. 5. 在子工程中删除Junit依赖的版本号部分
  2. <a name="1IjYM"></a>
  3. ### 聚合
  4. 1. 作用:一键安装各个模块工程
  5. 1. 配置方式:在一个总的聚合工程中配置 各个参与聚合的模块

//指定各个子工程的相对路径

  1. <a name="QKB51"></a>
  2. ### Web工程自动部署(即使用mvn deploy命令部署到服务器上)
  3. 在pom.xml中设置:

AtguiguWeb

tomcat7x 本机tomcat的安装目录

  1. <configuration>
  2. </configuration>
  3. </configuration>

```