Maven(五)——依赖管理、仓库及构建生命周期

依赖配置

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.meteor</groupId>
            <artifactId>Kitchen</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
  • 依赖坐标,groupId,artifactId,version。
  • scope配置。
    • compile,默认,依赖范围:在编译时用,在打包时也会把这个依赖打包进去。
    • provided,在编译时用,打包就不用了。有些依赖,在部署的时候容器会提供,如servelt-api这个依赖。打包的时候就不需要这个依赖了,就可以声明称provided。
    • 用于继承的pom配置
      • dependencyManagement。如果一个依赖在所有子pom中都要用,可以在父pom中dependencies标签上面添加dependencyManagement标签。

仓库

  • 仓库用于统一存储所有Maven项目,共享的构建的空间。
  • 仓库分类
    • 本地仓库,很多时候用来做缓存的,本地没有的依赖会从远程仓库下载,以后再用也不用重新下载。Maven本地仓库默认路径为:${user.home}/.m2/repository。
    • 远程仓库。
      • 本地仓库查找优先。
      • 提供Maven项目访问并下载构建至本地仓库。
      • /<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>Maven项目在远程仓库的存放路径,通过项目的坐标可以拼出来。
      • 分类。
        • 中央仓库,The Central Repository。
        • 其他公共仓库,镜像库,阿里云Maven仓库。
        • 私服,公司内部,相当于做一个代理,仓库管理器Artifactory和Nexus。
      • 配置
        • 使用配置文件settings.xml。
        • 在pom.xml为依赖指定respositories。

构建生命周期

  • 一个构建生命周期是一组精心组织的有序的阶段 。
  • 每一个阶段执行预先定义的”动作”。
    • 编译
    • 打包
    • 部署
  • 这些“动作”会根据项目的类型进行选择。

三套独立的生命周期:

  • clean,删除整个项目构建的输出。
    • pre-clean->clean->post-clean
  • site,生成站点文档的,在开源项目中用的多。
    • pre-site site post-site site-deploy
  • default,默认的生命周期。
    • … process-resources,compile … test package,install,deploy
    • validate,验证项目是否正确,验证完整的构建过程必要的信息是否有缺少的。
    • process-resources,将资源文件复制,复制到目标目录下,以后打包用。
    • compile,编译源代码。
    • test,单元测试。
    • package,将编译好的代码进行打包。
    • install,将一个包安装到本地仓库,在本地开发时,其他项目如果依赖了这个项目,其他项目就可以直接查。
    • deploy,将包上传到远程仓库。

Maven架构

  • 插件(plugin)式架构,由一个很小的引擎加上Maven插件构成的。
  • 所有的插件本身也是一个Maven构建,由Maven仓库管理。
  • 每一个插件提供多个目标(Goal)。
  • 调用目标的格式。
    • mvn <Plugin>:<Goal> 如:mvn tomcat7:run。

插件目标绑定构建生命周期

  • 生命周期阶段与目标绑定。
  • 用户通过指定生命周期阶段就能够隐式的通过插件执行任务,如:mvn compile实际上执行的是:mvn compiler:compile。
  • 对于package阶段,会根据项目类型不同,绑定到不同的目标。jar、war等。

插件配置

<build>
        <finalName>Restaurant</finalName>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8181</port>
                    <uriEncoding>UTF-8</uriEncoding>
                    <finalName>Restaurant</finalName>
                    <server>tomcat</server>
                </configuration>
            </plugin>
        </plugins>
</build>
  • 插件配置元素:groupId、artifactId、version、configuration。
  • 查看当前插件的configuration有哪些配置参数,mvn help:describe -Dplugin=<plugin_name> -Dgoal=<goal> -Ddetail
    • mvn help:describe -Dplugin=compiler -Dgoal=compile -Ddetail=true
  • 对于继承的父pom的插件继承,使用pluginManagement标签。

常见的插件

  • mvn内建插件
    • compiler等。
  • help插件,帮助文档。
    • mvn help:help -Ddetail=true
  • tomcat7插件。
  • exec,对java代码来说,可以把jar包跑起来。
  • 更多插件。
  • 自定义插件。

总结 pom.xml

  • 项目关系配置:坐标,多项目,继承,依赖。
  • 属性:在pom.xml中定义一些常量,然后在其他项目中引用。
  • 构建配置:插件配置,生命周期绑定。
  • 普通项目属性:作者信息,开源协议。
    这里写图片描述

maven做项目管理的过程:

  • pom.xml(描述项目构建)。
  • 远端依赖仓库。
  • 解析pom,依赖管理。
  • 构建生命周期,不同的构建阶段。
  • 插件:目标(源文件、中间产出物、资源文件、class文件、打包文件)。
    这里写图片描述

Maven配置文件

  • conf/settings.xml
  • 配置maven的公共仓库
  • 配置本地仓库位置
<localRepository>D:/developmentEnv/mavenRepository</localRepository>
  • 配置阿里云maven镜像仓库
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

总结

  • 默认的标准的目录结构
  • pom继承,Super POM,多项目管理
  • 依赖及依赖配置 dependencyManagement这个参数
  • 仓库的概念
  • 构建生命周期
  • 插件及目标

猜你喜欢

转载自blog.csdn.net/u011741311/article/details/80169683