- 浏览: 42251 次
- 性别:
- 来自: 上海
最新评论
-
pengtyao:
兄弟能传一份word原始版到附件么,谢谢
jira插件开发学习 -
suifeng:
多谢, 藏之.
Oracle8i中使用Java语言来开发存储过程 -
wzpwork:
谢谢楼主,我也写了一个这样的爬虫,但被阿里给终止了,直接返回找 ...
使用htmlparser抓取阿里巴巴上宁波企业的详细资料 -
leeqianjun:
网络爬虫web Harvest 比较不错,扩展性非常好,只不过 ...
使用htmlparser抓取阿里巴巴上宁波企业的详细资料 -
sdh5724:
最受不了的是写爬虫。 不控制速度的程序员。 每天系统要自动屏蔽 ...
使用htmlparser抓取阿里巴巴上宁波企业的详细资料
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.1</version>
<type>jar</type>
<scope>runtime</scope>
</dependency>
|
<repository>
<id>central</id>
<url>http://www.ibiblio.org/maven2</url>
</repository>
|
<repository>
<id>companyName</id>
<url>http:// ${ip}/maven</url>
</repository>
|
Maven 出现到现在也有很长时间了,初识它的感觉至今仍清晰的印在脑海中。现在想来,当时从 Ant 移情 Maven 的想法其实很朴素,就是因为 Maven 可以以网站的形式展现与项目相关的信息,如开发人员列表、各种 Report。这种方式为项目的构建带来了极大的方便,尤其是 Report 的。试想对于产生的 Junit-Report、JavaDoc、CheckStyle、PMD 等报告,如果没有一个统一的入口,每次切换目录是多么令人厌烦的事情!
Maven 无疑是相当成功的,这一点从越来越多的开源项目开始使用 Maven 就可以看出。Maven 取得成功的原因很简单:在简化构建脚本的同时,功能并没有缩水,反而有所增强;提供汇集项目信息的工具,并以相当友好的方式呈现;丰富的插件简化了工作。如此有力的工具出现,自然是争相使用。
如今 Maven2 已经推出,Maven 的官方网站称,Maven2 相对于 Maven1 是一个相当大的转变,甚至不惜牺牲兼容性来达到这一目的。(为了 Maven1 的用户着想,Maven1 仍在继续他的使命。)如此大的变动到底换来了什么样的结果?
比起 Maven1 那不急不慢的运行速度,Maven2在速度上有了质的飞跃,甚至与Ant相比也毫不逊色(当然,下载不算)。除此之外,"简化工作,使用业界公认的最佳实践"也是是 Maven2 的另一大主题,其他的新特性无处不在体现 Maven2 为简化工作而做出的努力。
Maven1 和 Maven2 主要配置文件的对比:
- Maven1:project.xml、maven.xml、project.properties和build.properties。
- Maven2:pom.xml和settings.xml。
POM是Maven的核心对象模型,在Maven2中POM已由project.xml转移到pom.xml中使用,版本也由3升级为4。对于项目,一般只需要pom.xml就行了。
在Maven2中不需要也不提倡使用maven.xml,原因如下:
- plugin的易用性的增强。
- 散布于maven.xml中的内容难以在不同项目间共享,也不利于维护。在Maven2中建议使用自定义的plugin来封装这些内容。
如果仍期望能够使用类似maven.xml的功能,如<preGoal>,请参考Inserting non-standard build steps using preGoals and postGoals。
在Maven2中,配置使用settings.xml,它取代了原有的project.properties和build.properties。配置在Maven2中存在两种级别:
- 用户级,针对操作系统登录用户而言。一般在$home/.m2/,对于windows用户,就是目录:C:\Documents and Settings\用户名\.m2\settings.xml。
- 全局级:一般在%M2_HOME%/conf/settings.xml,M2_HOME是Maven2的根目录环境变量名。
在settings.xml中可以配置,如本地Repository、proxy等等,关于settings.xml的结构可以从Maven的官方网站上获取。
在Maven2中,编写plugin的语言由jelly变更为Java和BeanShell。Java在速度上更有优势,而且开发人员的熟悉程度更高。对于其他的流行脚本,如groovy,Maven的官方网站的意见是,等待其更成熟时再考虑
。好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。Maven2根据业界公认的最佳目录结构,为开发者提供了缺省的标准目录模板。Maven2的标准目录结构如下:
使用目录模板,可以使pom.xml更简洁。因为Maven2已经根据缺省目录,预定义了相关的动作,而无需人工的干预。以resources目录为例:
- src/main/resources,负责管理项目主体的资源。在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。
- src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个目录中的所有文件及子目录,会复制到target/test-classes目录中,为后续的测试做好了准备。
这些动作在 Maven1 中,是需要在 maven.xml 中使用<preGoal>或<postGoal>来完成的。如今,完全不需要在pom.xml中指定就能够自动完成。在src和test都使用resources,方便构建和测试,这种方式本就已是前人的经验。通过使用Maven2,使这个经验在开发团队中得到普及。
创建标准目录模板,可以通过如下命令:
|
groupId和artifactId的含义与Maven1中的含义一样,参数artifactId的值会作为项目根目录的名字。除了建立相应的目录之外,Maven2还会创建缺省的pom.xml。
Maven2也考虑到:不同类型的项目需要拥有不同的目录结构。如创建web项目,可以使用命令:
|
在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段:
- validate,验证工程是否正确,所有需要的资源是否可用。
- compile,编译项目的源代码。
- test-compile,编译项目测试代码。
- test,使用已编译的测试代码,测试已编译的源代码。
- package,已发布的格式,如jar,将已编译的源代码打包。
- integration-test,在集成测试可以运行的环境中处理和发布包。
- verify,运行任何检查,验证包是否有效且达到质量标准。
- install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
- deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
- generate-sources,产生应用需要的任何额外的源代码,如xdoclet。
如果要执行项目编译,那么直接输入:mvn compile即可,对于其他的阶段可以类推。阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。
在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:
- compile,缺省值,适用于所有阶段,会随着项目一起发布。
- provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
- runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
- test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
- system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
<scope>的使用举例:
|
在Maven1中,需要把依赖所需要的包也一并列出。这对于使用类似如Hibernate的用户来说所操的心太多了,而且也不方便。在Maven2中实现了传递依赖,如此对于Hibernate所依赖的包,Maven2会自动下载,开发人员只需关心Hibernate即可。
注意:只有得到Maven支持的依赖,通常是plugin形式出现,才能获得这个特性。而且对于一些老的plugin,可能由于时间的关系不支持传递依赖。如至少在Maven 2.0.1中,对于Hibernate 2.1.2,仍然需要显式列出Hibernate 2.1.2所依赖的包。
安装Maven2的步骤非常简单:首先从Maven官方网站下载相应的软件包,目前是Maven 2.0.1;然后解压,并设置环境变量M2_HOME= Maven2的解压安装目录;最后将%M2_HOME%/bin添加到path中,方便Maven在任何目录下运行。
Maven2的运行命令是mvn,使用mvn -h可以获得相关的帮助信息。常用情形:
- 创建Maven项目:mvn archetype:create
- 编译源代码:mvn compile
- 编译测试代码:mvn test-compile
- 运行测试:mvn test
- 产生site:mvn site
- 打包:mvn package
- 在本地Repository中安装jar:mvn install
- 清除产生的项目:mvn clean
或许是由于刚刚推出的缘故,Maven2目前还是有一些不尽如人意的地方。尤其是Report部分的plugin,有的是因为目前还没有,如junit-report。有的则是一些莫名其妙的问题,如checktyle和pmd,在本地locale下都无法正常工作。以pmd举例,在产生PMD报告时会抛出如下异常:
|
幸运的是,Maven2一出现就备受关注,要不了多长时间,诸如此类的问题应该就会很快解决。
Maven2在Maven1的优势基础之上,又向前迈进了一大步。它提供的这些新特性大大地缩短了开发管理中的工作量,使得开发人员将精力集中在实际的业务问题上。而且这些新特性对于简化使用,普及最佳实践,也起到了积极的作用。
发表评论
-
使用 CAS 在 Tomcat 中实现单点登录(转载)
2010-03-29 13:37 1148使用 CAS 在 Tomcat 中实现单点登录 ... -
使用htmlparser抓取阿里巴巴上宁波企业的详细资料
2008-11-07 21:30 5010最近无聊,写个小程序抓取阿里巴巴企业的详细信息,用h ... -
结合Apache和Tomcat实现集群和负载均衡
2008-11-02 10:53 2052本文基本参考自 轻松实现Apache,Tomcat集群和负载均 ... -
Oracle8i中使用Java语言来开发存储过程
2008-11-02 10:49 1696在Oracle8i之前,开发人 ... -
Hibernate3调用存储过程用法
2008-11-02 10:43 2563直接以一个例子在说明,如DB2中有一个简单存储过程 selec ... -
Lucene 索引数据库
2008-10-30 16:49 1354Lucene,作为一种全文搜索的辅助工具,为我们进行条件搜索, ... -
2008年中 My Favorite Java Site
2008-10-29 12:56 9742008年中 My Favorite Java Site ... -
maven的使用
2007-09-06 11:36 1789一、前言 早就知道maven 在java 项目 ... -
使用Maven管理Eclipse Java项目(转载)
2007-09-06 09:44 2468为什么要使用Maven,使用Maven有什么好处 maven ...
相关推荐
Maven2 的新特性 http://www-128.ibm.com/developerworks/cn/opensource/os-maven2/index.html 二、maven2安装 1、首先去官方网站下载之:http://maven.apache.org/download.html,我选择的是截至目前最新版本...
maven安装与配置 《快速上手Maven:2-3年技术人员的实战指南》是一门专为具有2-3年工作经验的技术专业人士设计的...掌握Maven的安装和基本配置方法。 熟练运用Maven进行项目构建、依赖管理和插件开发。 优化和定制Ma
本书内容全面而系统,Maven的原理、使用方法和高级应用尽含其中;注重实战是本书的另一个特点,不仅在各个知识点都辅有大量的小案例,而且还有一个综合性的案例贯穿全书。如果你想使用Maven,或正在使用Maven,本书...
使之提供更加高效和友好的用户接口,越来越多的企业和开发人员选择使用富客户端技术构建商业应用,本课程主要是介绍了解最流行的富客户端框架jquery - easyUI API及熟悉掌握其高级特性,并结合SSH2框架与Maven实现...
, 本书内容全面而系统,Maven的原理、使用方法和高级应用尽含其中;注重实战是本书的另一个特点,不仅在各个知识点都辅有大量的小案例,而且还有一个综合性的案例贯穿全书。如果你想使用Maven,或正在使用Maven,...
SpringCloud微服务课程说明 1 网站架构演变过程 1 传统架构 1 分布式架构 1 SOA架构 1 微服务架构 2 ...微服务架构产生的原因 2 ...漫谈微服务架构 2 ...会员和订单引入Maven依赖 68 ZuulGateway网关 69
JavaSE核心 异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性 熟练掌握JavaSE核心内容,特别是IO和多线程;...
十一、 2.0版本新特性 45 以Java 8 为基准 45 内嵌容器包结构调整 45 Servlet-specific 的server properties调整 45 Actuator 默认映射 46 Spring Loaded不再支持 46 支持Quartz Scheduler 46 OAuth 2.0 支持...
SOFARPC 简介 SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。...基本原理 1、当一个 SOFARPC 的应用启动的时候,如果发现当前应用需要发布 RPC 服务的话,那么 SOFARPC 会将这些服务注册到服务注册中心
本教程为授权出品教程 《Spring注解驱动开发》是一套帮助我们深入了解Spring原理... 3).web原理 1).Servlet3.0标准新增特性 2).异步请求相关 本视频使用了maven构建程序,需要同学们有对Spring.SpringMVC的基本
whatsmars-spring spring原理、集成及新特性 whatsmars-tomcat 模拟tomcat实现 whatsmars-dbrouter 分库分表实现 whatsmars-worker 多实例任务调度 whatsmars-dubbo Dubbo demo whatsmars-mq rocketmq,activemq ...
希望记录下自己学习和成长的历程,并和大家一起交流学习,公众号HappySnail。 初心 热爱可低岁月漫长,让分享成为一种习惯; 当学习完一个知识点以后,自己做笔记,同时事后要总结,如果自己能把一个知识清晰表达...
方案原理:一种巧妙的drawable.xml替代方案 演示Demo:一种巧妙的drawable.xml替代方案-效果篇 特性 ① 成本低 仅需开启DataBinding,核心仅一个方法; ② 高可读性 直接在布局中的View标签声明drawable属性,对View...
增加依赖:通过调用maven命令,下载jar包和热加载到系统,主要用来分析接口方法参数,主要作用在普通模式。 依赖列表:通过分析pom文件,展示已经加载的jar包。 其它特性 springboot 整合 redis,支持spring el ...
playscript是在准备《编译原理之美》课程期间开发的一门脚本语言。主要用来展示编译器的前端技术。 这门语言目前实现的特征是: 语法特征总体上比较像java,因为这一版本的词法和语法规则文件都是借鉴java语言的规则...
原理示例基本原理集群原理快速开始 添加maven依赖(已经同步到中央maven库,最新版本参见项目主页): <groupId>cn.wanghaomiao</groupId> <artifactId>SeimiCrawler <version>0.1.0 在包crawlers下添加爬虫...
6.2.3表单和基本登录选项 52 设置默认的登录目的地 54 6.2.4注销处理 54 6.2.5使用其他身份验证提供程序 55 添加密码编码器 56 6.3高级Web功能 56 6.3.1记得我认证 56 6.3.2添加HTTP / HTTPS通道安全 57 6.3.3会话...
特性 根据GoogleAuthenticator demo中抽离出来的关键部分算法,可以和官方demo做下对比 模仿了现在主流手机宝令翻牌的效果 原理说明 demo中需要一个秘密密钥键盘在ABCDEFGHIJKLMNOPQRSTUVWXYZ234567之间,需要同...
maven Nexus Jenkins 工作软件 反编译软件 office系列 下载器 adobe系列 记录软件 思维导图 office--Note 邮件管理 性能优化 分层优化 系统级别 中间件级别 JVM级别 代码级别 分段优化 前端 ...