我是靠谱客的博主 多情黑裤,最近开发中收集的这篇文章主要介绍Maven生命周期Maven导jar包网址Maven生命周期pom.xml上常用元素介绍Maven的依赖范围Maven依赖传递        Maven依赖冲突 Maven聚合,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Maven导jar包网址

                            https://mvnrepository.com

Maven生命周期

         完整的项目构建过程: clean(清理)--->compile(编译)--->test(测试)

       --->package(打包)---->集成测试--->验证--->部署

    1.clean  清理项目

           1.1pre-clean  执行清理前的工作

           1.2clean 清理上一次构建生成的所有文件

           1.3post-clean 执行清理后的文件

   2.defaut 构建项目(最核心)

            2.1compile 编译项目

            2.2test  测试项目

            2.3package 打包

            2.4install 安装到本地仓库中

   3. site 生成项目站点

              3.1 pre-site 在生成项目站点前要完成的工作

              3.2 site 生成项目的站点文档

              3.3 post-site 在生成项目站点后要完成的工作

              3.4 site-deploy 发布生成的站点到服务器上

pom.xml上常用元素介绍

         pom.xml核心管理文件,用于项目管理,组织管理,依赖管理管理信息的操作

<!--指定当前pom版本
-->
<modelVersion>4.0.0</modelVersion>
<!-- 组织名:包名.类名 -->
<groupId>com.xalo.maven</groupId>
<!-- 项目名 -->
<artifactId>MavenSpringMVC_01</artifactId>
<!-- 打包方式 jar: 大部分javaSE项目(默认导包方式)
war: web项目
pom:聚合工程-->
<packaging>war</packaging>
<!-- 第一个0:大版本号, 第二个0:分支版本号,
第三个0:小版本号
SNAPSHOT:快照版(说明当前这个项目处于开发阶段), release:稳定版
beat:公测版
GA: 正式发布版 -->
<version>0.0.1-SNAPSHOT</version>
<!-- 项目名称,生成文档时使用到 -->
<name>MavenSpringMVC_01 Maven Webapp</name>
<!-- 项目地址 -->
<url>http://maven.apache.org</url>

        不常用到的配置

<!-- 项目地址 -->
<url>http://maven.apache.org</url>
<!-- 项目描述-->
<description>这是一个基于maven的SSM项目</description>
<!-- 开发作者名称 -->
<developers>
<developer>
<id>1</id>
<name>张三</name>
</developer>
</developers>
<!-- 许可证信息-->
<licenses>
<license>
<distribution>由中国国防安全部认证</distribution>
</license>
</licenses>
<!--组织信息
-->
<organization>
<name>蓝鸥科技</name>
<url>http://www.lanoou.com</url>
</organization>

       配置全局参数:一般用于规定依赖的同一版本

<properties>
<!-- 字符编码配置 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 全局版本设置 -->
<spring.version>5.0.7.RELEASE</spring.version>
</properties>

         排除依赖列表

配置完成之后,在Maven Dependencies中只会看到spring-context包,排除了依赖它的包

         

Maven的依赖范围

       用于指定maven依赖在哪个生命周期范围内有效,我们平时开发项目,需要将jar导入classpath中  maven为我们提供了三种classpath:  编译  测试   运行

在scope标签中通过<scope></scope>配置

   scope有6种值:

      (1) compile: 默认的范围,编译测试运行都有效

      (2)provided:在编译和测试时有效,运行无效

              如:servletAPI编译时加入,运行不需要,因为容器中有,在加入会报错

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>

     (3)runtime:在测试和运行有效,编译期间无效  如: jdbc的驱动类

     (4)test:只在测试范围有效 如: junit单元测试

<!-- 依赖列表:pom中最重要的 -->
<dependencies>
<!--依赖坐标:用于本地仓库或者远程仓库中的jar包
-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!-- 指定依赖的依赖范围:测试阶段有效 -->
<scope>test</scope>
</dependency>
</dependencies>

      (5)system: 跟provide一样,只在编译和测试有效,

                        但与本机系统关联,可移植性差(javahome)

     (6)import: 导入的依赖范围,它只使用在dependencyManagement中,

                   表示从其它的pom中,导入

                   dependency的配置 如: 将A中依赖导入B中

               

        

Maven依赖传递

       创建是三个maven project 

    (1)  山鸡--->南哥    南哥---> B哥    那么山鸡---> B哥  

       B哥需要先compile package install 或者直接 install,

然后南哥才能引入compile,山鸡依赖南哥,南哥也需要clean install

               

                  

        

<modelVersion>4.0.0</modelVersion>
<groupId>com.xalo.hongxiang.shanji</groupId>
<artifactId>ShanJi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!--山鸡依赖南哥:会产生传递依赖 因为南哥是依赖B哥的,所以此时山鸡会同时依赖南哥和B哥 -->
<dependency>
<groupId>com.xalo.hongxing.nange</groupId>
<artifactId>NanGe</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--依赖排除-->
<exclusions>
<!-- 排除依赖列表:
排除B哥依赖 -->
<exclusion>
<groupId>com.xalo.hongxing.bge</groupId>
<artifactId>Bge</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

Maven依赖冲突

  两条原则: 

    (1)短路原则: 

             A--->B--->C--->X(.jar)

             A---D---X(.jar)  优先

          例如:

               山鸡---> 南哥 ---> B哥 ----> commons-io2.4

               山鸡 ---> B哥---> commons-io2.0

              此时观察山鸡会依赖2.0版本,因为山鸡离南哥近

<modelVersion>4.0.0</modelVersion>
<groupId>com.xalo.hongxing.nange</groupId>
<artifactId>NanGe</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!--让南哥依赖2.0的版本 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xalo.hongxing.bge</groupId>
<artifactId>Bge</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- b哥依赖2.4版本 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>

     (2)先声明,先优先

                如果路径相同,则谁先声明,先解析谁

 Maven聚合

        聚合:对多个项目放在一起运行,同时进行安装.

执行 clean,  install会发现同时安装了三个项目

<modelVersion>4.0.0</modelVersion>
<groupId>com.xalo.hongxing.parent</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 聚合三个项目 -->
<modules>
<module>../Bge</module>
<module>../NanGe</module>
<module>../ShanJi</module>
</modules>

 

 

 

 

 

 

 

 

最后

以上就是多情黑裤为你收集整理的Maven生命周期Maven导jar包网址Maven生命周期pom.xml上常用元素介绍Maven的依赖范围Maven依赖传递        Maven依赖冲突 Maven聚合的全部内容,希望文章能够帮你解决Maven生命周期Maven导jar包网址Maven生命周期pom.xml上常用元素介绍Maven的依赖范围Maven依赖传递        Maven依赖冲突 Maven聚合所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部