Maven最佳实践

本文不想讨论Maven是什么、能做什么、我们选择Maven有什么好处……本文只是提出在公司大规模开发环境中使用Maven技术的一个案例、一次实践、一种思路,供大家借鉴和参考。至于是不是“最佳”?当然不是!因为没有“最佳”,只有“更佳”:-)

POM,不得不说一下

对Maven而言,POM(Poject Object,项目对象)文件就是一个项目的全部,再不需要其他的配置文件来描述项目了!当在 cmd / shell 中执行mvn、对改项目进行package或其他操作时,只要 cd 到pom文件所在的目录即可,当然,前提是需要将mvn配置在系统路径中。

POM结构

    POM文件通常只包括 5 个部分,建议按照这个顺序配置:
    1. 基本配置
    2. 引用root-pom - 这个很重要,后面会说明
    3. 开发者信息 - “猩猩苦苦”干了半天,总要留个名吧
    4. 构建配置 - 包括必要的插件配置
    5. 依赖配置 - 核心的核心,很多人使用Maven就混乱在这里,本文将提到如何在root-pom上做文章并解决之
    除了以上5个部分,项目还可适当增加1个 <modules> 结点,其他结点没有强力的理由,建议谨慎增加。

    整体示例


    基本配置

    说明:
    artifactId sample-xxx-yyy,即:主工程名-第一功能说名-第二功能说明 version 如果只是对组织内使用的话,建议固定用一个版本:例如 1.0-SNAPSHOT packaging 如上所示3选1,一般是 jarwar ,部分基础的 root-pom 可以为 pom
    name 无特殊情况,同artifactId

    引用Root POM

    • 这是很重要的一点:各个工程公用的配置,都可以统一的归于这个 root-pom,例如第三方的库的版本号、必需的本组织(第二方)依赖库……这样做的可以有效的避免依赖库版本的混乱 ,好好设计这个 root-pom 吧,依据总体规划的复杂度,你仍然可以对 root-pom 再进行分层,例如:
    基础第三方库版本定义的pom
     

    基础第三方库的pom

    开发者

    • 简单地写上负责人以及主要参与人员的名字信息,他人通过pom可以查看作者。

    构建配置

    • 可以在相应的 root-pom 中配置一些常用的插件,如:
      • 规定编译的源文件使用的是UTF-8编码
      • 只编译 src/main/java 位置的源文件
      • 将 src/main/java 中的 xml, properties, java 文件打包到jar中
      • ……
    • 某个项目特有的,如:要在MANIFEST文件中加入一个属性,应在该项目的 pom 中单独配置: 

    依赖配置

    应该对第三方的依赖和对组织内(第二方)的依赖区别而待。

    • 对第三方的依赖,不要写版本号,不需要写scope,因为这应该在相应的 root-pom 中指定:

    • 对组织内的依赖,建议统一一个固定版本号(1.0-SNAPSHOT),这会减少很多协作上的麻烦:

    一些其他建议

    1. <distributionManagement> 及 <repository> 的配置,放在合适的 root-pom 中定义吧。
    2. 在相应的 root-pom 中配置 maven 的默认结构、build/resources/resouce 等配置项。还可以包括诸如 .svn 文件不会被打到jar中等细节。
    3. 在相应的 root-pom 中配置 defaultGoal ,建议为 install,即 $ mvn 等价于 $mvn install 。
    还有一些更好的实践?希望你能告诉我:-)

    <script type="text/javascript"> </script>

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值