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

  
   
     
            

原文地址:https://www.cnblogs.com/robbychan/p/3786765.html