项目管理工具 maven(2) ---- Maven入门、常用命令、生命周期与概念模型

1 Maven入门

1.1  Maven工程运行示例

1.1.1  运行Web工程

        进入maven工程目录(当前目录有pom.xml文件),运行tomcat:run命令。

              

        根据上边的提示信息,通过浏览器访问:http://localhost:8080/maven-helloworld/

             

1.1.2  问题处理

        如果本地仓库配置错误会报下边的错误

              

        分析:

        maven工程运行先从本地仓库找jar包,本地仓库没有再从中央仓库找,上边提示downloading。。。表示从中央仓库下载jar,由于本地没有联网,报错。 

        解决:

        在maven安装目录的conf/setting.xml文件中配置本地仓库,参考:“maven安装/配置本地仓库章节”。


1.2  Maven项目工程目录约定

        使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下:

        src/main/java —— 存放项目的.java文件

        src/main/resources —— 存放项目资源文件,如spring,hibernate配置文件

        src/test/java —— 存放所有单元测试.java文件,如JUnit测试类

        src/test/resources —— 测试资源文件

        target —— 项目输出位置,编译后的class文件会输出到此目录

        pom.xml——maven项目核心配置文件

        Project

        |-src

        |   |-main

        |   |   |-java       ——存放项目的.java文件

        |   |   |-resources  ——存放项目资源文件,如spring, hibernate配置文件

               |-webapp     —— webapp目录是web工程的主目录

                   |-WEB-INF

                   |-web.xml

         |   |-test

         |      |-java        ——存放所有测试.java文件,如JUnit测试类

         |      |-resources   —— 测试资源文件

         |-target             —— 目标文件输出位置例如.class、.jar、.war文件

         |-pom.xml           ——maven项目核心配置文件


1.3  常用的Maven命令

1.3.1 compile

        compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下。

        cmd进入命令状态,执行mvn compile,如下图提示成功:

         

        查看 target目录,class文件已生成,编译完成。

        

1.3.2 test

        test是maven工程的测试命令,会执行src/test/java下的单元测试类。

        cmd执行mvn test执行src/test/java下单元测试类,下图为测试结果,运行1个测试用例,全部成功。

        

1.3.3 clean

        clean是maven工程的清理命令,执行 clean会删除target目录的内容。

1.3.4 package

        package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包。

1.3.5 install

        install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库。

1.4  Maven生命周期

1.4.1  三套生命周期

      maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是: 

      Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

      Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

      Site Lifecycle 生成项目报告,站点,发布站点。

1.4.2  生命周期的阶段

       每个生命周期都有很多阶段,每个阶段对应一个执行命令。

1.  如下是clean生命周期的阶段

pre-clean 执行一些需要在clean之前完成的工作

clean 移除所有上一次构建生成的文件

post-clean 执行一些需要在clean之后立刻完成的工作

2.   如下是default周期的内容:

    validate

   generate-sources

   process-sources

   generate-resources

   process-resources     复制并处理资源文件,至目标目录,准备打包。

   compile     编译项目的源代码。

   process-classes

   generate-test-sources

   process-test-sources

   generate-test-resources

   process-test-resources     复制并处理资源文件,至目标测试目录。

   test-compile     编译测试源代码。

   process-test-classes

   test     使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

   prepare-package

   package     接受编译好的代码,打包成可发布的格式,如 JAR 。

   pre-integration-test

   integration-test

   post-integration-test

   verify

   install     将包安装至本地仓库,以让其它项目依赖。

   deploy     将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

3.   如下是site生命周期的阶段

pre-site 执行一些需要在生成站点文档之前完成的工作

site 生成项目的站点文档

post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy 将生成的站点文档部署到特定的服务器上

1.4.3  命令与生命周期的阶段

       每个maven命令对应生命周期的某个阶段,例如:mvn clean 命令对应clean生命周期的clean阶段,mvn test 命令对应default生命周期的test阶段。

       执行命令会将该命令在的在生命周期当中之前的阶段自动执行,比如:执行mvn clean 命令会自动执行pre-clean和clean两个阶段,mvn test命令会自动执行validate、compile、test等阶段。 

       注意:执行某个生命周期的某个阶段不会影响其它的生命周期!

       如果要同时执行多个生命周期的阶段可在命令行输入多个命令,中间以空格隔开,例如:clean package 该命令执行clean生命周期的clean阶段和default生命周期的package阶段。

1.5  Maven的概念模型

      Maven包含了一个项目对象模型,一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(DependencyManagement System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

         下图是maven的概念模型图:

                    

   项目对象模型(Project Object Model)

         一个maven工程都有一个pom.xml文件,通过pom.xml文件定义项目的坐标项目依赖项目信息插件目标等。

   依赖管理系统(DependencyManagement System)

         通过maven的依赖管理对项目所依赖的jar 包进行统一管理。

         比如:项目依赖junit4.9,通过在pom.xml中定义junit4.9的依赖即使用junit4.9,如下所示是junit4.9的依赖定义:

<!-- 依赖关系 -->

         <dependencies>

                  <!--此项目运行使用junit,所以此项目依赖junit -->

                  <dependency>

                          <!-- junit的项目名称 -->

                          <groupId>junit</groupId>

                          <!-- junit的模块名称 -->

                          <artifactId>junit</artifactId>

                          <!-- junit版本 -->

                          <version>4.9</version>

                          <!-- 依赖范围:单元测试时使用junit-->

                          <scope>test</scope>

                  </dependency>

   一个项目生命周期(ProjectLifecycle)

         使用maven完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven将这些过程规范为一个生命周期,如下所示是生命周期的各各阶段:

                         

         maven通过执行一些简单命令即可实现上边生命周期的各各过程,比如执行mvn compile执行编译、执行mvn clean执行清理。

   一组标准集合

         maven将整个项目管理过程定义一组标准,比如:通过maven构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。


   插件(plugin)目标(goal)

         maven 管理项目生命周期过程都是基于插件完成的。(比如clean指令是有相应插件的)


猜你喜欢

转载自blog.csdn.net/ZG_24/article/details/80529927