zoukankan      html  css  js  c++  java
  • Maven笔记

    1、简介

    Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架。
    下载地址:http://maven.apache.org/download.cgi
    POM 代表工程对象模型。它是使用 Maven 工作时的基本组建,是一个 xml 文件。它被放在工程根目录下,文件命名为 pom.xml。

    2、POM创建

    创建一个POM之前,应该要先决定项目组(groupId),它的名字(artifactId)和版本,因为这些属性在项目仓库是唯一标识的。
    pom.xml 的根元素是 project,它有三个主要的子节点(且是所有pom必须包含的):
    groupId: 项目组的编号,这在组织或项目中通常是独一无二的。
    artifactId: 这是项目的ID;
    version: 版本号
    例(超级pom):

    <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>
      <parent>
        <groupId>ai.bell.aspc</groupId>
        <artifactId>aspc-parent</artifactId>
        <version>1.0.0-SNAPSHOT</version>
      </parent>
      <groupId>com.rtm</groupId>
      <artifactId>rtm</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>rtm</name>
      <description>运营支撑系统</description>
      <modules>
          <module>rtm-biz</module>
          <module>rtm-spi</module>
          <module>rtm-web</module>
          <module>rtm-web-srv</module>
      </modules>
    </project>

    普通pom:

    <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>
       <groupId>com.yiibai.project-group</groupId>
       <artifactId>project</artifactId>
       <version>1.0</version>
    <project>

    3、生命周期

    一个典型的 Maven 构建生命周期是由下列顺序的阶段:
    阶段     处理     描述
    准备     资源     资源复制 资源复制可以进行定制
    编译     执行     编译 源代码编译在此阶段完成
    包装     打包     创建JAR/WAR包如在 pom.xml 中定义提及的包
    安装     安装     这一阶段在本地/远程Maven仓库安装程序包

    构建生命周期阶段的目标是执行顺序是一个良好定义的序列。
    Maven 主要的生命周期:

     1 validate                 验证项目是否正确,并且所有必要的信息可用于完成构建过程
     2 initialize               建立初始化状态,例如设置属性
     3 generate-sources         产生任何的源代码包含在编译阶段
     4 process-sources          处理源代码,例如,过滤器值
     5 generate-resources       包含在包中产生的资源
     6 process-resources        复制和处理资源到目标目录,准备打包阶段
     7 compile                  编译该项目的源代码
     8 process-classes          从编译生成的文件提交处理,例如:Java类的字节码增强/优化
     9 generate-test-sources    生成任何测试的源代码包含在编译阶段
    10 process-test-sources     处理测试源代码,例如,过滤器任何值
    11 test-compile             编译测试源代码到测试目标目录
    12 process-test-classes     处理测试代码文件编译生成的文件
    13 test                     运行测试使用合适的单元测试框架(JUnit)
    14 prepare-package          执行必要的任何操作的实际打包之前准备一个包
    15 package                  提取编译后的代码,并在其分发格式打包,如JAR,WAR或EAR文件
    16 pre-integration-test     完成执行集成测试之前所需操作。例如,设置所需的环境
    17 integration-test         处理并在必要时部署软件包到集成测试可以运行的环境
    18 pre-integration-test     完成集成测试已全部执行后所需操作。例如,清理环境
    19 verify                   运行任何检查,验证包是有效的,符合质量审核规定
    20 install                  将包安装到本地存储库,它可以用作当地其他项目的依赖
    21 deploy                   复制最终的包到远程仓库与其他开发者和项目共享 

    当一个阶段是通过 Maven命令调用,例如:mvn compile,只有阶段到达并包括这个阶段才会被执行。

    4、配置文件

    生成配置文件是一组可以用来设置或覆盖 Maven 构建配置值的默认值。
    创建配置文件的文件主要有三种类型:
    Per Project 在项目中定义的POM文件, pom.xml
    Per User 定义在 Maven 中的设置 XML 文件(%USER_HOME%/.m2/settings.xml)
    Global 定义在 Maven 中的全局设置 xml 文件 (%M2_HOME%/conf/settings.xml)
    Maven 构建配置文件的文件,可以使用以下几种方式来激活:
    明确使用命令从控制台输入;
    通过 Maven 设置;
    基于环境变量(用户/系统变量);
    OS设置(例如,Windows系列);
    呈现/丢失的文件;

    例(系统设置):

    <profile>
       <id>test</id> <!--配置文件名-->
       <activation>
          <os>
             <name>Windows XP</name>
             <family>Windows</family>
             <arch>x86</arch>
             <version>5.1.2600</version>
          </os>
       </activation>
    </profile>

    5、Maven资源库

    是一个目录,即目录中保存所有项目的 jar 库,插件或任何其他项目特定文件,并可以容易由 Maven 使用;
    Maven库中有三种类型:
    local - 本地库
    central - 中央库
    remote - 远程库
    1)、 本地存储库是一个在本地计算机上的一个文件夹位置。当你第一次运行 maven 命令的时候它就被创建了(默认是在%USER_HOME%/.m2)。当运行 Maven 构建,那么 Maven 会自动下载所有依赖的jar到本地存储库中。它有助于避免依赖存储在远程机器上的项目建立参考
    2)、Maven中央存储库是由Maven社区提供的资源库。它包含了大量的常用程序库。当Maven没有在本地存储库找到任何依赖,就会开始搜索在中央存储库,它会使用下列网址: http://repo1.maven.org/maven2/
    中央仓库网页浏览地址:http://search.maven.org/#browse
    3)、远程仓库即用户自定义服务器仓库
    例:

       <repositories>
          <repository>
             <id>companyname.lib1</id>
             <url>http://download.companyname.org/maven2/lib1</url>
          </repository>
          <repository>
             <id>companyname.lib2</id>
             <url>http://download.companyname.org/maven2/lib2</url>
          </repository>
       </repositories>

    当我们执行 Maven 构建命令,Maven 依赖库会依次搜索本地仓库、中央仓库、远程仓库;

    其他,外部依赖(即本地jar,但不在本地仓库的)
    添加方式示例:

          <dependency>
             <groupId>ldapjdk</groupId>
             <artifactId>ldapjdk</artifactId>
             <scope>system</scope>
             <version>1.0</version>
             <systemPath>${basedir}srclibldapjdk.jar</systemPath>
          </dependency>

    6、Maven 的插件

    Maven 是一个执行插件的框架,每一个任务实际上是由插件完成的,包括创建jar、编译、单元测试等;
    一个插件通常提供了一组目标,可使用以下语法来执行:mvn [plugin-name]:[goal-name] 如 mvn mvn compiler:compile

    插件可在 pom.xml 使用的 plugin 元素来指定;
    每个插件可以有多个目标;
    常见插件:

    clean       编译后的清理目标,删除目标目录
    compiler    编译 Java 源文件
    surefile    运行JUnit单元测试,创建测试报告
    jar         从当前项目构建 JAR 文件
    war         从当前项目构建 WAR 文件
    javadoc     产生用于该项目的 Javadoc
    antrun      从构建所述的任何阶段运行一组 Ant 任务 

    7、快照

    快照(SNAPSHOT )是一个特殊版本,指出目前开发拷贝。不同于常规版本,Maven 每生成一个远程存储库都会检查新的快照版本。

    8、maven常用命令

    mvn clean dependency:copy-dependencies package 清理和打包,dependency:copy-dependencies package是一个目标
    mvn clean deploy           在构建环境中,使用下面的调用来纯净地构建和部署项目到共享仓库中 
    mvn archetype:generate     使用互动模式创建项目;
    mvn idea:idea              将项目转化为idea项目;
    mvn eclipse:eclipse        将项目转化为eclipse项目;
    mvn compile     编译;
    mvn test        测试;
    mvn clean       将以前编译得到的旧的 class 字节码文件删除;
    mvn pakage      打包,动态 web工程打 war包,Java工程打 jar 包;
    mvn site        生成项目相关信息的网站;
    mvn -e                  显示详细错误信息. 
    mvn dependency:resolve  打印出已解决依赖的列表 
    mvn dependency:tree     打印整个依赖树;
    mvn verify              执行所有检查,验证包是有效的,符合质量规范;
    mvn install             安装包至本地仓库,以备本地的其它项目作为依赖使用
    mvn deploy              复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)
    
    快速创建项目         mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    创建web项目          mvn archetype:generate -DgroupId=com.yiibai -DartifactId=CounterWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
    打包时跳过测试代码    mvn package -Dmaven.test.skip=true

    9、 dependencyManagement使用

    (1)在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。(dependencyManagement里只是声明依赖,并不实现引入)

    (2)pom.xml文件中,jar的版本判断的两种途径

    • 如果dependencies里的dependency自己没有声明version元素,那么maven就

    会到dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果

    没有就会报错,告诉你必须为dependency声明一个version

    • 如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。
      //版本管理,不引入jar 包
      <dependencyManagement>  
            <dependencies>  
                  <dependency>  
                      <groupId>org.springframework</groupId>  
                      <artifactId>spring-core</artifactId>  
                      <version>3.2.7</version>  
                  </dependency>  
          </dependencies>  
      </dependencyManagement>  
      
      //实际引用的jar包 
      <dependencies>  
             <dependency>  
                      <groupId>org.springframework</groupId>  
                      <artifactId>spring-core</artifactId>  
             </dependency>  
      </dependencies>
      示例
  • 相关阅读:
    HTML5 Input 类型
    Html5 web 储存
    解决json日期格式问题的3种方法(转载)
    Json格式串处理
    全局图片防盗链处理
    我的博客开张了
    iPhone手机屏幕分辨率
    通过CSS3伪类,美化Radio按钮样式
    测试用例 相关
    MongoDB基本命令
  • 原文地址:https://www.cnblogs.com/aland-1415/p/11175873.html
Copyright © 2011-2022 走看看