zoukankan      html  css  js  c++  java
  • 我们为什么要使用maven,公司推行maven杂谈

    最近在公司内推荐使用maven,推荐一个落后于业内十年的技术,实在没什么好说的,可是没想到遇到了前所未有的阻力,总是听到各种各样的质疑,我就闹不明白了,推行这个东西是为了更规范的管理项目成果,方便大家平时开发,提高自动化办公,怎么感觉我像是卖保险的?

    其实想想也不难理解,很多人都害怕改变,希望生活工作都保持现在的样子,因为他们害怕改变带来更多的工作,害怕因为改变可以带来的挫败感,另一个方面我只能狭隘的测试,就是因为人害怕你做成功了,掩盖了他们吧,总之爱咋咋,做认为正确的事情,其他的都交给领导吧,如果领导不开眼,至少咱提升了自己的个人竞争力.

    目前问题

    1. jar包混乱:工程中存在jar包重复,版本不一致的情况.
    
    2. 添加jar包随意:需要用到第三方jar时,随便下载就添加到项目中了,没有记录
    
    3. 重复构建:每个开发人员从svn下载完代码后,都要对项目进行配置,构建.
    
    4. 不同环境的构建差异:总是存在在开发环境运行良好的程序,到了测试环境编译不通过,或者不同环境的配置文件不一致,需要手动的去修改
    
    5. 模块间的开发依赖纯手动处理:提倡模块化的开发,可是怎么做好模块化开发之间的依赖处理,没有解决方案.
    

    Maven能干什么?

    依赖管理

    1. 依赖范围:<scope>test</scope>
    2. 依赖性传递
    3. 依赖调解:路径最近者优先
    4. 可选依赖
    

    仓库管理

    对项目的成果进行管理,进行可视化的管理.
    

    web项目与自动化部署

    通过插件能够热部署本地或远程服务器
    

    持续集成

    聚合和继承

    现在提倡模块化的开发,说好的软件应该是即插即用的,Maven的聚合特性能够把项目的各个模块聚合在一起构建,而继承特性则能帮助抽取各模块相同的依赖和插件等配置
    

    资源过滤

    常见问题:

    开发,测试,生产的配置文件不一致,每次需要测试人员手动去修改,还要时刻注意更新代码的时候,不要覆盖了自己的修改,效率低下
    

    那么如何解决这个呢,maven提供资源过滤功能,在编译项目的时候就可以指定一个环境的配置文件.只需要在编译的时候加一个参数就能解决这个问题.达到了智能适应环境差异的灵活构建.

    项目站点:

    1. 关于:项目描述
    2. 持续集成:项目持续集成服务器信息
    3. 依赖:项目依赖信息,包括传递性依赖,依赖图,依赖许可证以及依赖文件的大小,所包含的类数目等.
    4. 依赖管理:基于项目的依赖管理配置生成的报告.
    5. 问题追踪:项目的问题追踪信息系统.
    6. 邮件列表:项目的邮件列表信息.
    7. 插件管理:项目所使用的插件的列表.
    8. 项目概述:项目概述包括坐标,名称,描述等.
    

    站点插件

    1. javaDocs:生成api文档
    2. Source Xref: 打开浏览器就能访问项目的最新源代码
    3. CheckStyle:代码规范自动检测工具
    4. PMD: 源代码分析工具
    5. ChangeLog:生成三份报告,分别为:
    	1. Change Log: 基于提交的变更报告,包括每次提交的日期,文件,作者,注释等
    	2. Developer Activity: 基于作者的变更报告,包括作者列表以及每个作者相关的提交次数和涉及文件数目.
    	3. File Activity: 基于文件的变更报告,包括变更的文件列表及每个文件的变更次数.
    6. Corbertura: 单元测试覆盖率
    

    怎么使用Maven

    1.Maven 配置文件配置:

    将安装目录下conf下的setting.xml(全局配置), 复制到{user}/.m2/ 目录下(用户级配置)
    

    2.修改本地仓库的地址:

    <localRepository>D:Maven
    epository</localRepository>
    

    3.添加私服仓库镜像:

    <mirror>  
      <id>maven</id>  
      <name>one of the central mirrors in china</name>  
      <url>http://10.21.20.81:18080/nexus/content/groups/public/</url>  
      <mirrorOf>*</mirrorOf>  
    </mirror>
    

    4.添加用户名密码:

    <server>
      <id>maven</id>
      <username>ligang</username>
      <password>cs123</password>
    </server>
    

    5.Pom.xml 配置快照仓库 和 release 仓库:

    <distributionManagement>
    <repository>
        <id>maven</id>
        <url>http://10.21.20.81:18080/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>maven-snapshots</id>
        <url>http://10.21.20.81:18080/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
    </distributionManagement>
    

    6.自动化测试:mvn clean test

    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running junitTest
    test maven
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 sec
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    

    7.持续集成:mvn –U clean test

    -------------------------------------------------------
    T E S T S
    -------------------------------------------------------
    Running junitTest
    test maven
    Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.028 sec <<< FAILURE!
    testTest(junitTest)  Time elapsed: 0.014 sec  <<< FAILURE!
    junit.framework.ComparisonFailure: expected:<test maven[1]> but was:<test maven[]>
        at junit.framework.Assert.assertEquals(Assert.java:81)
        at junit.framework.Assert.assertEquals(Assert.java:87)
        at junitTest.testTest(junitTest.java:12)
    
    
    Results :
    
    Failed tests:   testTest(junitTest): expected:<test maven[1]> but was:<test maven[]>
    
    Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
    

    8.发布到私服仓库:

    mvn clean deploy
  • 相关阅读:
    Known Notation括号匹配类问题(2014年ACM/ICPC 亚洲区域赛牡丹江)
    01串LIS(固定串思维)--Kirk and a Binary String (hard version)---Codeforces Round #581 (Div. 2)
    大学生究竟哪种姿势查成绩
    让你的手机缓存视频在电脑上播放
    亲,你的多功能工具箱到了,麻烦签收一下
    真WIFI密码查看器
    爱剪辑永久vip版爱要不要
    这两款ios和Android的免费影视神器最近火爆了
    全球免费直播软件爱要不要
    一次性给你上万款黑科技软件,留着自己悄悄用吧。
  • 原文地址:https://www.cnblogs.com/j2eeDevelper/p/5216781.html
Copyright © 2011-2022 走看看