我是靠谱客的博主 多情黑裤,这篇文章主要介绍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核心管理文件,用于项目管理,组织管理,依赖管理管理信息的操作

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!--指定当前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>

        不常用到的配置

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!-- 项目地址 --> <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>

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

复制代码
1
2
3
4
5
6
<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编译时加入,运行不需要,因为容器中有,在加入会报错

复制代码
1
2
3
4
5
6
<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单元测试

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<!-- 依赖列表: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

               

                  

        

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<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版本,因为山鸡离南哥近

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<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>
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<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会发现同时安装了三个项目

复制代码
1
2
3
4
5
6
7
8
9
10
11
<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依赖传递  内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部