我们为什么要使用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\repository</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
我们为什么要使用maven,公司推行maven杂谈的更多相关文章
- 从初识Maven到使用Maven进行依赖管理和项目构建
前些天就安装了Maven,以备自己以后整合项目用,尤其是我们的ssh,ssm项目.想必好多人在开始的时候并不清楚Maven是什么,它能够帮助我们干什么. 所以在学习Maven之前我们一定要知道它是什么 ...
- Maven实战——常用Maven插件介绍
maven nexus 库已上传了第三方jar,但就是用mvn compile下不到本地 回答于 2013-06-04 14:40 你是通过何种方式上传到nexus的? 有给pom文件吗? 如果是单纯 ...
- Maven入门-2.Maven一些核心概念介绍
1.Maven仓库2.Maven坐标3.Maven插件和目标4.Maven生命周期4.1 clean:清理项目4.2 default:构建项目(重要)4.3 site:建立项目站点 1.Maven仓库 ...
- 从配置maven环境到maven项目的新建
话不多说,直接入正题. 一.配置maven 环境 首先安装最新版支持javaee的eclipse.我这里下载的版本是eclipse-jee-mars-2-win32-x86_64的新版(我是2017年 ...
- maven之一:maven安装和eclipse集成
maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍maven的安装及与eclipse的集成. maven的 ...
- Maven进价:Maven构建系列文章
Maven:基于Java平台的项目构建.依赖管理和项目信息管理. 1.构建 Maven标准化了构建过程 构建过程:编译.运行单元测试.生成文档.打包和部署 避免重复:设计.编码.文档.构建 2.依赖管 ...
- Eclipse中Maven工程缺少Maven Dependencies
Eclipse在引入Maven工程后,找不到Maven Dependencies.使得代码报错,具体如下图所示: 而正常Maven的工程如下所示: 产生这种现象的原因可能是工程对应的开发环境改变,本地 ...
- 4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念
1 maven概念模型 2 maven的生命周期,项目构建过程 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg== ...
- maven系列之一maven安装和与IDE集成
第一部分:maven的基本信息和安装,配置 maven是一个项目构建和管理的工具,提供了帮助管理 构建.文档.报告.依赖.scms.发布.分发的方法.可以方便的编译代码.进行依赖管理.管理二进制库等 ...
随机推荐
- 网络通信简单实例BIO,NIO,AIO
这里,我将做一个简单的通信程序,分别使用三种原始的通信工具:BIO,NIO,AIO. 功能就是一个服务器,一个客户端.服务器就是处理请求,返回响应.而客户端就是连接服务器,发送请求,接收响应. 第一步 ...
- Hive Tutorial(上)(Hive 入门指导)
用户指导 Hive 指导 Hive指导 概念 Hive是什么 Hive不是什么 获得和开始 数据单元 类型系统 内置操作符和方法 语言性能 用法和例子(在<下>里面) 概念 Hive是什么 ...
- 使用免费组件view pdf 文档
“Is there any way to view PDF files in a Winforms tool?” 这个是我在技术论坛上发现的一个老外求助的帖子,然后看到别人回复的帖子中建议了一个免费的 ...
- 站在巨人的肩膀上---重新自定义 android- ExpandableListView 收缩类,实现列表的可收缩扩展
距离上次更新博客,时隔略长,诸事繁琐,赶在去广州答辩之前,分享下安卓 android 中的一个 列表收缩 类---ExpandableListView 先上效果图: 如果想直接看实现此页面的代码请下滑 ...
- (三)WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心)
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在上一节中我们知道了屏幕上一像素等于实际中多少单位长度(米或 ...
- wordpress上传图片时重命名--修改插件时遇到的一些问题
wordpress是用php语言开发的博客平台,它扩展性强,容易扩展,很适合拿来做二次开发. 1,问题由来 本周五,我在浏览公司的网站(基于wordpress开发)时发现,网站首页上有两篇文章的缩略图 ...
- jQuery-1.9.1源码分析系列(一)整体架构续
这一节主要是jQuery中最基础的几个东东 2. jQuery的几个基础属性和函数 a. jQuery.noConflict函数详解 在jQuery初始化的时候保存了外部的$和jQuery _j ...
- 关于IIS和.NET 4.0的问题总结
注册asp.net 4.0 到iis 如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下 运行->cmd Microsoft Windows [版本 6.1.7601 ...
- 常见的Web实时消息交互方式和SignalR
标签: WebSocket SignalR 前言 1. Web消息交互技术 1.1 常见技术 1.2 WebSocket介绍 1.3 WebSocket示例 2. Signal 2.1 SignalR ...
- 【Win10开发】绘制静态UI
相信经历过Windows Insider的人对下面这个图都不会陌生,偶然看见邹欣老师领导的微软团队写了篇用xaml绘制这个静态页面,那咱也来亲手实验一番.唔...请做和放宽! 首先我们来看看xaml代 ...