Maven简介

一、官网概述及Maven特点

       Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.  一个以项目为对象模型(POM)的软件项目管理工具,通过配置来管理项目的构建,报告和文档等等。
  Maven把整个项目当成一个对象(与项目具体内容无关),所以其构建过程是一个标准/统一/可高度复用的过程。Maven通过pom.xml来定义项目的构建(如加载依赖、编译、生成目录、打包、部署等等),并且支持项目间继承和聚合,相比传统操作来说,构建过程更简单、集中和自动化;这两大特点使maven成为当前主流的构建工具;除此之外Maven中央仓库还提供了大量的依赖库,还支持开发者本地源、能够与svn、git等源码工具集成管理项目发布等等。

二、下载 / 安装 / 环境变量配置(mvn -version) / 目录说明
官网地址:http://maven.apache.org/download.cgi

  • bin目录用来存储mvn相关指令
  • boot目录只包含一个plexus-classworlds-xxx.jar,这是maven自己的类加载器,maven使用该框架加载自己的类。
  • conf目录存放了一些配置信息,其中比较重要的是settings.xml,对该文件的修改,对所有用户生效;将该文件copy一份到Maven本地仓库目录.m2下,对其的修改则是用户级别。
  • lib目录存放Maven自身的依赖库

三、创建Maven项目
  执行mvn archetype:generate命令,通过maven原型创建项目,成功后会在当前目录下生成Maven原型标准目录。(如果创建时卡在Searching for remote catalog: .../archetype-catalog.xml,则加上参数-DarchetypeCatalog=internal,表示不从远程服务器上取archetype-catalog.xml)

E:\mvnproject>mvn archetype:generate -DgroupId=com.zst -DartifactId=traveler 
-Dversion=1.0.0-SNAPSHOT -X


  

四、Maven构建的生命周期及命令
  Maven生命周期是对构建过程的一个抽象和统一,它本身不做任何工作,实际构建阶段中所有任务都由插件来完成。Maven有三套生命周期:clean、default、site。clean生命周期的目的是清理项目;default周期的目的是构建项目,所以它定义了项目构建时需要执行的所有步骤;site周期的任务是为项目生成站点文档。
  每个生命周期内又包含不同的阶段,每阶段通过调用插件来实现该阶段任务,且阶段依次有序进行。这一点从上面新生成的pom.xml可以看出(注 : 原型版本不同,生成的pom.xml文件也不同,为了看到效果,在上面的命令中添加参数指定原型版本如-DarchetypeVersion=1.4

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

其中default周期是功能最丰富的周期,下面是其主要阶段及各阶段对应插件:

  • validate:项目验证,如是否为一个正常的Maven项目等等。
  • process-sources:对src/main/resource中的资源文件进行变量替换,并输出到target下
  • compile:编译项目的主代码,一般是将src/main/java下的代码编译成class,并放至target下
  • test-complie:编译测试代码,并输出到测试的classpath下
  • test:执行单元测试代码(注:Maven要求测试类必须以*Test.java结尾
  • package:打包项目为可分发的格式,即生成JAR、WAR、EAR包等。
  • install:将软件包安装到本地存储库中,作为本地其他项目的依赖项
  • deploy:在集成或发行版环境中完成,将包复制远程存储库,与其他开发人员和项目共享。

site生命周期相关阶段包括生成生成文档、部署到指定Web服务器等等。这个在实践中很常用,后续会有篇章介绍远程部署。
关于Maven生命周期的详细信息可以参考官网地址:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 

五、打包 / 生成文档 / 安装到本地仓库
     执行mvn package进行打包,默认会在target目录下生成对应的.jar包。
     执行mvn site操作默认会生成site目录,该目录包含项目的站点文档信息。
     执行mvn install安装到本地仓库,将pom.xml文件加入到了打包好的jar包。从而保证该项目可以作为其它项目的依赖项存在,甚至父项目。

E:\mvnproject\traveler>mvn package
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ traveler ---
[INFO] Building jar: E:\mvnproject\traveler\target\traveler-1.0.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
...
E:\mvnproject\traveler>java -cp target\traveler-1.0.0-SNAPSHOT.jar com.zst.App
Hello World!
...
E:\mvnproject\traveler>mvn site
...
E:\mvnproject\traveler>mvn install
...按序再次执行一遍编译、测试、打包等操作
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ traveler ---
[INFO] Installing E:\mvnproject\traveler\target\traveler-1.0.0-SNAPSHOT.jar to E:\maven\m2\repository\com\zst\traveler\1.0.0-SNAPSHOT\traveler-1.0.0-SNAPSHOT.jar
[INFO] Installing E:\mvnproject\traveler\pom.xml to E:\maven\m2\repository\com\zst\traveler\1.0.0-SNAPSHOT\traveler-1.0.0-SNAPSHOT.pom
...

E:\mvnproject\traveler>

六 配置详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值