zoukankan      html  css  js  c++  java
  • Maven 项目管理工具 Notes 《Maven实战》 前3章

    Maven 项目管理工具
     Apache Maven 主要服务于基于 Java 平台的项目构建,依赖管理 和 项目信息管理。
     国内知名软件公司阿里巴巴和淘宝开始使用 Maven 管理他们的项目。
    第一章 Maven
     1.1 何为 Maven 
     1.1.1 何为构建
       编写源代码 --> 编译 --> 运行单元测试 --> 生成文档, 打包, 部署。 maven clean install
     1.1.2 Maven 是优秀的构建工具
     1.1.3 Maven 不仅仅是构建工具
         Java 不仅是一门编程语言,还是一个平台,通过 JRuby 和 Jython, 可以在java平台上编写和运行 Ruby 和 Python 程序。
       Maven 不仅是构建工具,还是一个依赖管理工具和项目信息管理工具。他提供了中央仓库,能帮我们自动下载构件(artifact)。
       也就是通过一组坐标可以准确定位每一个 artifact, 能找到任何一个 Java 类库 (如 jar 文件)。 约定优于配置
     1.2 被误解的 Maven
      使用 Maven 最高效的方式永远是命令行。 IntelliJ IDEA Maven 更好的集成
    第二章  安装与下载 Maven 
     2.2.1 安装 : (1), 检查 echo $JAVA_HOME  与 $ java -version  
                  (2), http://maven.apache.org/download.html
                  (3), tar -xvzf apache-maven-3.0-bin.tar.gz
                  (4), ln -s apache-maven-3.0 apache-maven
                  (5), export M2_HOME=/home/q/bin/apache-maven
                       export PATH = $PATH:$M2_HOME/bin
                       将这两句话添加到 ~/.bashrc   这样每次启动一个终端,配置就能自动执行。
          使用 : 安装目录分析 - bin, boot, conf, lib, LICENSE.txt, NOTICE.txt, README.txt
                                boot : 里面是类加载器框架
                                conf : settings.xml 定制 maven 的行为。建议做法 复制该文件到 ~/.m2/目录下 
                                                                               在用户范围内定制maven的行为
                                lib : 真正的 maven 所在
     2.3.2  默认在 ~/.m2 目录下除了 repository 仓库之外没有其他文件了。
             但是最佳实践是 : 复制 M2_HOME/conf/settings.xml 到 ~/.m2/settings.xml 这样也便于以后的升级
    第三章 Maven 使用入门
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>      <!-- 指定了当前 POM 模型的版本 -->
    
      <groupId>com.qunar.basicJava</groupId>  <!-- com.mycompany.myapp  如 : com.google.guava -->
      <artifactId>javase</artifactId>     <!-- hello-worl 定义了 MAVEN 项目在组中唯一的 ID  -->
      <version>1.0-SNAPSHOT</version>
      <packaging>jar</packaging>
      
      <name>basic-java</name>  <!-- 一个对用户更为友好的项目名称,不必须 --> 
      
    </project>
    ** Maven 的主代码 与 测试代码 **
     (1), 主代码 会被 打包到最终的构件中 (如jar)
    在工程目录下 : mvn clean compile
           /home/work/JavaProjects/JavaLearns/BasicJava/src/main/java/com/qunar/basicJava/javase/HelloWorld.java
           约定优于配置
     mvn clean compile
     clean:clean    resources:resources    compiler:compile
     默认情况下 maven 构建的所有的输出都在 tarjet 目录中。   
     resources:resources  为定义项目资源,暂时略过。
     compiler:compile     将项目的主代码编译至 target/classes 目录
     (2), 测试代码不会被打包
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope> 依赖范围 : 表示该依赖范围只对测试代码有效,
                              如果不声明依赖范围,默认为 compile,表示该依赖对主代码和测试代码都有效。
        </dependency>
      典型的单元测试包含三个步骤:(1)准备测试类及数据 (2),执行要测试的行为 (3),检查结果  测试方法标注 @Test
      测试代码编写完毕后,可以 mvn clean test, 实际执行的是 :
       clean:clean, resources:resources, compiler:compile, resources:testResources
       Maven 执行测试test之前,它会先自动执行项目主资源处理,主代码编译,测试资源处理,测试代码编译等工作。这是maven生命周期的特性。
       如遇到错误 : 可能是,Maven核心插件-compiler插件默认只支持编译 Java 1.3
       
       surefire:test surefire 是 maven 负责执行测试的插件,执行后会显示测试报告
     3.4 打包和运行
       项目进行,编译,测试之后,下一个重要步骤就是打包 package, Hello World 的 POM 中没有指定打包类型,使用默认的打包类型jar. mvn clean package     
       打包名称为 : artifact-version.jar
       如需要自己定制 : finalName
       如有需要可以复制这个 jar 文件到其他项目的 classpath 中而使用 HelloWorld 类。但是如何让其他的 Maven 项目直接引用这个 jar 呢? 还需要执行 mav clean install; 这样该 HelloWorld 项目输出的 jar 安装到了 Maven 本地仓库中。                
       但是 HelloWorld 类是有main的,不会添加到 mainfest 中,为了生成可以执行的 jar,需要 maven-shade-plugin 见《Maven实战》53P
       总结 : 学习了 Maven 的编译,测试,打包等知识。
     3.5 使用 Archetype 生成项目骨架
         Maven3  mvn archetype:generate
         未来章节,会讨论 如何开发 Maven Archetype 意思就是自己定制自己的 Archetype
         例如 : gid : com.youdao.mvnbook  aid : helloworld
    
      
       
         
                
    

  • 相关阅读:
    前端程序员的进阶
    字符集的知识
    通晓多种编程语言的程序员,真香?
    理解 Docker
    免费开源软件的潜在安全风险
    技术编程人员成长的 9 个段位
    如何更好的设计 RESTful API
    selenium环境搭建:
    自动化测试有哪些?
    删除书籍:
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786765.html
Copyright © 2011-2022 走看看