资讯专栏INFORMATION COLUMN

Maven实战笔记

cyixlq / 2419人阅读

摘要:但是,这种行为是危险的,所以最佳实践应该是显示声明任何项目中直接用到的依赖。生命周期和插件的生命周期生命周期清理项目。生命周期建立和发布站点,分享项目信息。

坐标和依赖 依赖冲突的调节

当包的依赖产生冲突,如A->B->X(1.0)和A->D-X(2.0),应该引入X的哪一个版本?消解冲突的法则如下:

路径最近者优先。

如路径长度一样,第一声明者优先。

排除不想要的依赖

在引入第三方库时,会自动的引入它们的依赖,有时候传递的依赖并不是我们想要的,可以用exclusion标签排除不想要的库,并且自己在依赖中直接引入想要的库。

    
        
            com.tc
            a
            1.0.0
            
                
                    com.tt
                    n
                
            
        

        
            com.tt
            n
            4.0
        
           
使用未声明的依赖

在项目中,可以不在pom中直接声明你需要的依赖,因为在其它引入的库中可能已经包含了这个依赖。但是,这种行为是危险的,所以最佳实践应该是显示声明任何项目中直接用到的依赖。

SNAPSHOT的作用

依赖模块的快照版本,会保持该模块的定期更新,因为在发布snapshot的模块时,仓库会为其打上时间戳。在用户使用该模块时,无需更改pom中模块的版本号,maven会自动的向仓库对比时间戳是否变化,然后现在最新的版本。

SNAPSHOT版本应该只在组织内部模块之间调试和使用,在真正发布项目时,应该保证所有的依赖的模块都是发布版本,否则可能因为SNAPSHOT版本的不断变化而引入bug。

生命周期和插件 Maven的生命周期

clean生命周期:清理项目。
default生命周期:构建的主要步骤,如compile,是核心部分。
site生命周期:建立和发布站点,分享项目信息。

不同的生命周期又有多个阶段,比如clean有pre-clean、clean和post-clean的阶段。

生命周期互相独立,但是步骤之间会有依赖关系,比如default周期中的test就依赖于test-compile等步骤。

插件目标与阶段之间的绑定

生命周期有多个阶段,一个插件也有多个目标。比如maven-compiler-plugin插件有compiletestCompile等目标。

阶段会和插件目标绑定来执行自己的功能。比如default周期的complie阶段会和maven-compiler-plugin:compile插件目标绑定。

Maven的聚合和继承

多个模块可以放在一个总项目下,然后通过在总项目下一次构建所有的子模块。在总模块pom中加入如下元素:


    A
    B

子项目可以继承父项目的pom中配置的参数,如依赖、插件配置等。可以避免重复,还可以统一配置的依赖、插件版本。子项目需要在pom中添加如下部分:


    parent.group
    parent.artifact
    parent.version
 

聚合和继承在maven中是两个不同的概念,但是,可以统一在一个pom文件中。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67925.html

相关文章

  • Spring Boot学习笔记(二)Windows下IDEA 配置Maven

    摘要:本文主要记录下配置的详细步骤,便于初学者快速掌握及运用。到这里,配置就算结束了,在新建一个项目后,会根据中的配置自动下载对应包。总结最基础的配置已经完成,更深入的配置及遇见的坑在实战中不断积累,不断总结。 本文主要记录Windows下IDEA 配置Maven的详细步骤,便于初学者快速掌握及运用。 下载Maven 直接到官网下载需要的版本,直接解压到对应的目录即可,无需安装。showIm...

    joyqi 评论0 收藏0
  • Java 实战开发之mybatis三剑客(五)

    摘要:插件功能非常强大,,方法跳转提示,分页插件。三地址使用该插件在引入该插件具体使用,我们在以后的中再学习具体的方法。更多请参考学习笔记一入门 mybatis 插件功能非常强大,mybatis-generator,mybatis-plugin方法跳转提示,mybatis-pagehelper分页插件。 一、mybatis-generator 1、mybatis-generator配置 先在...

    NusterCache 评论0 收藏0
  • JAX-RS 2.0 中 REST 的四种服务类型

    摘要:当不存在子类,也不存在子类时,规范中定义,在这种情况下,为服务动态生成一个名为的实例,并自动探测匹配资源。其中是中的基类,它继承于情况二当不存在子类,但是存在子类时。以上就是规范中定义的四种服务的方式。 最近在学习 jersey 框架。他是 目前比较流行的 基于 JAX-RS 2.0 规范实现的 RESTful 框架。 我是跟着 《Java RESTful Web Service 实...

    bbbbbb 评论0 收藏0
  • 那些年我看过的书 —— 致敬我的大学生活 —— Say Good Bye !

    摘要:开头正式开启我入职的里程,现在已是工作了一个星期了,这个星期算是我入职的过渡期,算是知道了学校生活和工作的差距了,总之,尽快习惯这种生活吧。当时是看的廖雪峰的博客自己也用做爬虫写过几篇博客,不过有些是在前人的基础上写的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 开头 2017.08.21 正式开启我...

    xiaoqibTn 评论0 收藏0
  • 写这么多系列博客,怪不得找不到女朋友

    摘要:前提好几周没更新博客了,对不断支持我博客的童鞋们说声抱歉了。熟悉我的人都知道我写博客的时间比较早,而且坚持的时间也比较久,一直到现在也是一直保持着更新状态。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好几周没更新博客了,对不断支持我博客的童鞋们说声:抱歉了!。自己这段时...

    JerryWangSAP 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<